<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-1706439134994847071</atom:id><lastBuildDate>Fri, 09 Jan 2026 15:24:48 +0000</lastBuildDate><category>eclipse</category><category>java</category><category>business</category><category>amp</category><category>science</category><category>abm</category><category>dharma</category><category>osx</category><category>graphics</category><category>butterflyzer</category><category>ip</category><category>emf</category><category>ascape</category><category>biomed</category><category>visualization</category><category>web</category><category>escape</category><category>life</category><category>mylyn</category><category>xpand</category><category>politics</category><category>tasktop</category><category>gerrit</category><category>amf</category><category>virgo</category><category>xtext</category><title>Computing Reality</title><description>&lt;a href=&quot;http://milesparker.blogspot.ca/2013/01/on-computing-reality.html&quot;&gt;Software is eating the world! Or is it? The real world is far too complex to ever capture in code. Given that it isn&#39;t fully digestible, shouldn&#39;t we try to write code that reflects the beauty in the world and that helps the beings inhabiting it? Topics include Tools and Methodologies, Agent-Based Modelling, Eclipse, Modelling and may veer off into Social Science, the Buddhadharma, music, skiing, model trains...&lt;/a&gt;</description><link>http://milesparker.blogspot.com/</link><managingEditor>noreply@blogger.com (Miles Parker)</managingEditor><generator>Blogger</generator><openSearch:totalResults>78</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-3305517737560307094</guid><pubDate>Sat, 05 Jan 2013 00:26:00 +0000</pubDate><atom:updated>2013-01-07T09:35:54.760-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">gerrit</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">mylyn</category><title>Isn&#39;t Gerrit Ironic?</title><description>&lt;br /&gt;
In my &lt;a href=&quot;http://milesparker.blogspot.ca/2013/01/analyzing-gerrit-java-knime-and-numbers.html&quot;&gt;last post&lt;/a&gt;, I described the current state of Eclipse Gerrit adoption. If you haven&#39;t read that post, you might be as surprised as I was to find out how low it is: &lt;b&gt;less than&amp;nbsp;15% of all Eclipse Projects are using Gerrit&lt;/b&gt;, and of those only a few are using it in a meaningful way.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Implementing Gerrit&lt;/h3&gt;
&lt;br /&gt;
That&#39;s understandable, because Gerrit is notoriously difficult to implement.&amp;nbsp;But for those intrepid Eclipse Project Leads who don&#39;t mind getting their hands dirty, I&#39;ll take the time to detail all of the laborious steps:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Community&amp;amp;component=Git&amp;amp;short_desc=Enable%20Gerrit%20for%20my%20project&quot;&gt;Click Here&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;Now&lt;/span&gt;!!&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Replace the summary text &quot;my project&quot; with your project name&lt;/li&gt;
&lt;li&gt;Click &quot;Submit Bug&quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
If you&#39;re an Eclipse Committer or Contributor, the steps are even simpler.&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Email a link to the instructions above to the project lead.&lt;/li&gt;
&lt;li&gt;(There isn&#39;t a step two.)&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Of course, once you&#39;ve enabled Gerrit for your project, there are all kinds of new processes and practices that you&#39;ll need to adopt:&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;(There aren&#39;t any.)&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Actually, while we&#39;re on the subject of code reviews, I thought it might be appropriate to try a little exercise. Please compare and contrast the following words:&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Facetiousness&lt;/li&gt;
&lt;li&gt;Sarcasm&lt;/li&gt;
&lt;li&gt;Irony&lt;/li&gt;
&lt;li&gt;Satire&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
Question: Did you feel the need to google any of these terms before answering? If so, you might be particularly interested in&amp;nbsp;&lt;a href=&quot;http://theoatmeal.com/comics/irony&quot;&gt;this link&lt;/a&gt;. I think the most important thing to learn there is &lt;i&gt;don&#39;t debate irony&lt;/i&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
On reflection, it turns out that the above exercise wasn&#39;t at &lt;i&gt;all&lt;/i&gt; appropriate or relevant. I was just wasting your valuable time with an (arguably) mildly humorous segue. So let&#39;s&amp;nbsp;just move on and forget it ever happened, shall we?&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
But before we do that, one more question: Which of the above words is most appropriate for describing this statement? (You may also choose &quot;5. All of the above&quot;, &quot;6. None of the above&quot; or &quot;7. &lt;strike&gt;Other:&lt;/strike&gt; Just Stupid&quot;.)&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Okay, enough [1, 2, 3, 4, Other]. Everyone knows that code reviews are serious business. Deadly serious business. Lives are at stake. Remember that the next time you blindly &quot;Merge&quot;, Mr. or Ms. Reckless Coder!&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
Why Gerrit?&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
Really, the better question is &quot;Why &lt;i&gt;Not&lt;/i&gt; Gerrit?&quot; -- or it would be, except that it would be really odd to introduce a query by proposing a negation. There really is nothing to lose*, except for poor traceability, error-filled code, and the ability to easily slip one past the Eclipse IP team. [Irony, I think. Or was that Satire?]&amp;nbsp;Gerrit adoption can be as steep or as gradual as you want it to be -- I believe all of the default settings allow current committers to continue to commit straight to the Git repository, but I&#39;m too lazy to check right now.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;*There is one important exception; users of the&amp;nbsp;&lt;a href=&quot;http://milesparker.blogspot.ca/2011/06/indolent-programming-manifesto.html&quot;&gt;Indolent Development&lt;/a&gt;&amp;nbsp;methodology have found&amp;nbsp;significant&amp;nbsp;incompatibilities with Gerrit, as well as code reviews in general. It can especially interfere with practices 3 (The Random Walk) and 9 (Self-Expression). But the vast majority of Indolent adopters would have been too lazy/smart to read this far anyway.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;
Advantages&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
The advantages to code review are manifest (translation: &quot;everyone claims this, but I&#39;m not sure if there is any hard evidence, and am too lazy to find out&quot;), but include:&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Dramatic&amp;nbsp;code quality&amp;nbsp;improvement.&lt;/li&gt;
&lt;li&gt;Enforcement of common idioms and project standards.&lt;/li&gt;
&lt;li&gt;Clear workflows and defect traceability for contributions.&lt;/li&gt;
&lt;li&gt;Encouragement of intra-project collaboration and knowledge sharing.&lt;/li&gt;
&lt;li&gt;Greater inter-project transparency.&lt;/li&gt;
&lt;li&gt;Promotion of a more open and equitable Eclipse development process. (Back to that in a second.)&lt;/li&gt;
&lt;li&gt;A bunch of other stuff that, again, I&#39;m too lazy to look up references for. But why am I always the one who has to do all of the work? If you&#39;re so damn curious, why don&#39;t you just Google&amp;nbsp;&lt;a href=&quot;http://www.google.com/search?q=Gerrit+Advantages&quot;&gt;&quot;Gerrit Advantages&quot;&lt;/a&gt;&amp;nbsp;or something?&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;h4&gt;
Disadvantages&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
Okay, there are just a few disadvantages. Actually, so far I&#39;ve compiled a list of 27 (I&#39;m actually &lt;i&gt;not&lt;/i&gt; joking),&amp;nbsp;but I&#39;ll cover those in my next post. The reason I&#39;m not sharing those now is that I really don&#39;t want to give you any information that might dissuade you from&amp;nbsp;&lt;b&gt;&lt;a href=&quot;https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Community&amp;amp;component=Git&amp;amp;short_desc=Enable%20Gerrit%20for%20my%20project&quot;&gt;Clicking Here&amp;nbsp;Now!!&lt;/a&gt;&lt;/b&gt;&amp;nbsp;Sound fair?&lt;/div&gt;
&lt;h4&gt;
An Eclipse Revolution?&lt;/h4&gt;
&lt;div&gt;
The reason that I don&#39;t want to dissuade you from adopting Gerrit is because of point 6. &lt;b&gt;Gerrit has the potential to profoundly democratize the contribution process for Eclipse.&lt;/b&gt; That&#39;s because -- when implemented fully and correctly -- Gerrit makes it every bit as annoying for Committers to get code in as it is for&amp;nbsp;Contributors.&lt;br /&gt;
&lt;br /&gt;
Hmmm...let&#39;s see if I can put a more positive spin on that....&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For current committers -- even when fully implemented -- Gerrit really doesn&#39;t add much more of a burden than a straight commit, assuming that your project has decent oversight and communication. (You have that already, right?) And in many ways, it actually makes that process easier by automating some bits. The only additional step is that you have to actually go to the Gerrit review and click the submit button. At that point, you might say to yourself, &quot;gee, maybe I should ask at least one other person what they think of this change before I inflict it on all of my consumers and users&quot; -- but that&#39;s strictly between you and your conscience.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
But for contributors*, the whole picture changes dramatically:&lt;/div&gt;
&lt;h4&gt;
Before Gerrit&lt;/h4&gt;
&lt;div&gt;
The traditional process involves creating (or taking on) a bugzilla bug, submitting patches (the process of creating an Eclipse patch is far from trivial), hoping someone would bother to take a look at the patch and make comments on it, digging through code trying to find the bits that those half-thoughout comments were referring to, merging and making changes to that patch, dealing with some rather opaque IP rituals, etc..&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For the committer handling the patch, it mean manually applying the patch, dealing with any dependency changes or other build oddities, seeing if the darn thing actually builds, playing around with it, making half-thought out comments -- all of the time secretly hoping that the contributor would just give up and leave you in peace&amp;nbsp;[Satire].&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Git helps quite a bit, but it really doesn&#39;t help with the most important bits; managing builds, handling workflow, and tracking concerns.&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;
After Gerrit&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;
Now, if you want to contribute code to a Gerrit enabled project, things are &lt;a href=&quot;http://wiki.eclipse.org/Development_Resources/Handling_Git_Contributions#Gerrit&quot;&gt;&lt;i&gt;much&lt;/i&gt;&amp;nbsp;simpler&lt;/a&gt;. You create a bug, create a local topic branch, commit push them to gerrit, add project reviewers, and as changes come in, amend your local topic and push it again.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For the committer, it&#39;s even simpler. You fetch the commit (plug: using the rapidly improving Eclipse Mylyn Gerrit connector!), run it, suggest changes, wait for the user to get everything perfect, and then click one little submit button -- actually grateful that someone else fixed a bug or made an enhancement that you won&#39;t have to worry about anymore.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I really think that that advantage outweighs any other concerns, and it&#39;s why I&#39;d really ask Project Leads to &lt;a href=&quot;https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Community&amp;amp;component=Git&amp;amp;short_desc=Enable%20Gerrit%20for%20my%20project&quot;&gt;&lt;b&gt;Click This Link &lt;span style=&quot;color: red;&quot;&gt;Now&lt;/span&gt;!!&lt;/b&gt;&lt;/a&gt;&amp;nbsp;&lt;b&gt;Remember, you have &lt;span style=&quot;color: red;&quot;&gt;nothing&lt;/span&gt; to lose!! Web-masters are &lt;span style=&quot;color: red;&quot;&gt;standing by&lt;/span&gt;!! &lt;/b&gt;Believe it or not, that kind of badgering, repetition, naked-appeal-to-ego and strategic use of colour and obnoxious font styles has been repeatedly shown to work, &lt;i&gt;even for very intelligent people like you&lt;/i&gt;. So&amp;nbsp;&lt;b&gt;&lt;a href=&quot;https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Community&amp;amp;component=Git&amp;amp;short_desc=Enable%20Gerrit%20for%20my%20project&quot;&gt;Click Here &lt;span style=&quot;color: red;&quot;&gt;Now&lt;/span&gt;!!&lt;/a&gt;&amp;nbsp;&lt;/b&gt;(Actually, please don&#39;t do that unless you actually are a project committer.)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;*For those of you who are not familiar with the Eclipse community, a &quot;committer&quot; is someone who is a formal member of a project and has been given commit rights to the repository, a &quot;contributor&quot; is all of the rest of us&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Schmuck_(pejorative)&quot;&gt;schmucks&lt;/a&gt;. The 99%&#39;ers of the Eclipse universe, as it were.&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;
Adopting Gerrit&lt;/h3&gt;
&lt;div&gt;
Okay, things are a little more complex than I&#39;ve made it sound, admittedly. But it really isn&#39;t that hard to get going on. Check out&amp;nbsp;&lt;a href=&quot;http://wiki.eclipse.org/Gerrit#Using_the_Mylyn_Gerrit_Connector&quot;&gt;this wiki&lt;/a&gt;&amp;nbsp;page, but don&#39;t let the details scare you.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Since Gerrit &lt;i&gt;isn&#39;t&lt;/i&gt; actually all that easy to use &lt;i&gt;properly&lt;/i&gt;, sometimes for purely social reasons but also because of purely technical ones, -- especially when it comes to reviews that depend on other reviews (run away! run away! while you still can!!) -- and since new users will need quite a bit of time to get used to it and to become familiar with all of the conventions, it might make sense to start out with simple workflows on relatively straightforward bugs just to get the hang of things and to allow your project process to evolve. But you can get a good survey of best practices by checking out EGit and Mylyn reviews as both projects have been doing this long enough to have evolved pretty mature processes. (Hint, poke around and find all of the comments from current committers pointing out all of the dumb things that new committers are doing wrong. &lt;a href=&quot;https://git.eclipse.org/r/#/c/8732/&quot;&gt;Here&#39;s a good one&lt;/a&gt;.)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For project leads, you&#39;ll need to decide how err.. persuasive you want to be about getting people to adopt Gerrit. There may be some resistance from current committers, so there might be a need to get a little more active in encouraging adoption. Once you get a few committers rolling, my guess it that the inherent advantages along with the social/network pressures will kick in. Especially when existing committers start to see those contributions come pouring in.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
At this point, I should probably make some suggestions about best practices, offer some tips and tricks and address some common pitfalls. But really, I&#39;m feeling too lazy.&amp;nbsp;Hey, it&#39;s Friday, okay? And I&#39;m just back from holiday. I haven&#39;t really sunk into the demands of real work yet. Anyway, what are&amp;nbsp;&lt;i&gt;you&lt;/i&gt;&amp;nbsp;doing reading this blog? Don&#39;t &lt;i&gt;you&lt;/i&gt; have more important things to do?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Like...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;If you&#39;re an Eclipse Project Lead, &lt;span style=&quot;color: red;&quot;&gt;&lt;blink&gt;you&#39;ve already won&lt;/blink&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;!!!&amp;nbsp;&lt;a href=&quot;https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Community&amp;amp;component=Git&amp;amp;short_desc=Enable%20Gerrit%20for%20my%20project&quot;&gt;Click This Link&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;Now&lt;/span&gt;!!&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
And for all of you potential Eclipse Contributors out there, Mylyn, EGit, CDT, JDT/Platform and a &lt;a href=&quot;https://git.eclipse.org/r/#/admin/projects/&quot;&gt;bunch of other projects&lt;/a&gt; are already open for business!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://milesparker.blogspot.com/2013/01/adopting-gerrit.html</link><author>noreply@blogger.com (Miles Parker)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-3679115070419727574</guid><pubDate>Thu, 03 Jan 2013 20:45:00 +0000</pubDate><atom:updated>2013-01-07T09:37:02.638-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">dharma</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">science</category><category domain="http://www.blogger.com/atom/ns#">tasktop</category><title>On Computing Reality</title><description>This blog just passed a milestone, with 100,000 page views. Probably not a lot compared to most technology blogs, but it&#39;s gratifying to know that people have found the blog worthwhile enough to return to.&amp;nbsp;Hard to believe, but I&#39;ve written 75 posts in the last 3 years and 9 months.&amp;nbsp;It&#39;s easy for me to remember how long this blog has been going, because I started it just a few days after my second child&amp;nbsp;&lt;a href=&quot;http://milesparker.blogspot.ca/2009/03/birth-of-johan-ziji-and-this-blog.html&quot;&gt;Ziji was born&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Having reached that milestone, I think it&#39;s time for a bit of a shift.&amp;nbsp;Over the winter holidays, I&#39;ve been thinking a lot about how to balance work, life and the more creative things I feel compelled to do. One of those things is writing. In the last year, I&#39;ve only written 3 posts. My New Year&#39;s resolution is to blog more, but I&#39;ve felt that if I&#39;m going to take the time away from all of the other things I need and want to do, I need to become a lot more disciplined and focussed when I do take that time. &amp;nbsp;And that means better defining what I&#39;d like this blog to be about so that I can decide what&#39;s worth writing about and you can decide whether it might be worth reading. So I&#39;ve done a little &quot;rebranding&quot; to use bloodless marketing speak and I thought it would be worthwhile to take a little time to explain why.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
What&#39;s it all About?&lt;/h3&gt;
&lt;div&gt;
Why &quot;Computing Reality&quot;?&lt;br /&gt;
&lt;br /&gt;
My blog&#39;s new title invokes what to me is the key paradox in software development and science: We can represent interesting aspects of the world we live in using computational methods, and those representations can give us profound insights, challenging our biases and preconceptions. And I feel strongly that algorithmic approaches such as agent-based modeling are far better suited to &lt;a href=&quot;http://milesparker.blogspot.ca/2009/05/agent-based-model-for-influenza-h1n1.html&quot;&gt;describing reality&lt;/a&gt; than equation-based approaches. But we make a dangerous assumption when we accept the now trendy view (Kurzweil, et.al.) that we can really capture&amp;nbsp;(in every sense of that word)&amp;nbsp;reality in a stream of binary numbers. To me, that&#39;s not a exciting futurist concept but just the inevitable, logical, dark, and just plain wrong-headed endpoint of 400 years of scientific materialism, which is really nothing more than the state religion of the Silicon Age.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Reality is not computable. &lt;/b&gt;That shouldn&#39;t be a controversial statement -- it seems to follow naturally from the work of the greatest minds of the 20th Century, including Gödel, Turing, and Feyerabend, as well as a bunch of annoying post-modernists.&amp;nbsp;But that doesn&#39;t imply the magical hand of an external being either. Nor does it imply a meaningless existence. Reality is far more mysterious and beautiful than either of those extremes: We can never describe reality, we can only experience it, and that experience unfolds in ways that we&#39;ll never be able to predict.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Along that line, the blog&#39;s name reflects&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/gp/product/1590304292/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=milepark-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1590304292&quot;&gt;Contemplating Reality&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=milepark-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1590304292&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;,
 a brilliant book that -- while ostensibly for Buddhist practitioners -- could be a great resource for anyone who is interested in rigorously analyzing their own internal cognitive biases and in challenging their own assumptions about what reality is. The book describes simple practices -- we call them analytical meditation, but that&#39;s just another label -- that you can use to discover the fundamental nature of reality that exists beyond concepts.&amp;nbsp;An astute reader will ask at this point &quot;but then how can you contemplate it!?&quot; The answer is that concepts can be useful without them having to be real!&lt;br /&gt;
&lt;br /&gt;
In his article &lt;a href=&quot;http://contemplatingreality.org/images/Reality.pdf&quot;&gt;Reality Isn&#39;t What You Think&lt;/a&gt;, Andy Karr has to say about this apparent paradox:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;i&gt;&quot;Genuine freedom from fabrications comes from seeing through the delusion of concepts, not from suppressing them.&quot;&lt;/i&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Here&#39;s an example of how analytical meditation works:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;i&gt;&quot;You might feel that you know where various geographical reference points are located—Asia, Canada, Kansas, San Francisco. With your mind’s eye, see if you can find them. Are they in the east, west, north, or south? Did you take into consideration the curvature of the earth? How far away are they? Look at your experience of each reference point in turn. Is “Asia” anything more than the memory of a shape on a map? Can you ever find a whole city, or is San Francisco made up of lots of different glimpses the way home is? By contemplating in this way, you will understand that the planet and its geography are also projections. All outer objects can be investigated in this way, and you will find that all are emptiness. Outer objects still appear, but they have no essence.&quot;&lt;/i&gt;&lt;/blockquote&gt;
We can approach any material or conceptual object in this way, teasing it apart and discovering the empty quality inside, and by doing so we can open our minds to a much greater set of possibilities.&amp;nbsp;One of the things that I&#39;d like to do in future posts is to apply this same kind of practical rigour to challenge our assumptions about common representational problems in software and science.&lt;br /&gt;
&lt;br /&gt;
For example, we might ask ourselves what a &quot;Class&quot; really is: Is it possible to create a class that actually represents a domain concern completely? If not, what aspects are arbitrary? Is there still a consistent way to represent these arbitrary aspects? And so on.&amp;nbsp;I discuss the scientific implications of this approach in&amp;nbsp;&lt;a href=&quot;http://www.youtube.com/watch?v=E8hlogQMyNs&quot;&gt;this video&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
These are the kinds of questions that I ask myself all of the time as a software developer -- and I suspect that I&#39;m not the only person who looks at problems of representation using a similar sort of deconstructive approach. Basically, rather than look at the donut, we look at the hole. I find that activity to be an enormously helpful -- and enjoyable! -- part of the process of software creation. Because&amp;nbsp;the point of these kind of exercises is not to prove that the concepts are useless, but to see for ourselves how they constrain and condition our designs -- from that perspective we can start to play with software abstractions rather than worshipping them -- gaining a greater appreciation for the limits and possibilities of all design decisions.&lt;br /&gt;
&lt;br /&gt;
When we take this contemplative, reflective approach, we are simply applying the same scientific approach to our mental projections that we apply to matter. There is nothing &quot;religious&quot; about that -- just a willingness to be completely open to the further questions that arise when we do so. I think that anyone who does serious investigation into the matter would also end with the conclusion that &lt;b&gt;Reality cannot be conceptualized&lt;/b&gt;. And somehow, this leads us naturally back to bigger questions, like &quot;Why does it feel like something is missing?&quot; or &quot;Why do people sometimes treat other people so badly?&quot;&lt;br /&gt;
&lt;br /&gt;
If such talk makes you a bit uncomfortable, I can assure you that I feel just as uncomfortable mentioning it.&amp;nbsp;People aren&#39;t comfortable discussing &quot;religion&quot; and given the history of repression and ignorance brought about by it it&#39;s not difficult to see why! Especially since smart, creative and iconoclastic people have usually been the targets of that repression and ignorance. When people do decry the secularization of society it&#39;s usually because it is their version of the truth that&#39;s getting replaced.&amp;nbsp;&amp;nbsp;For what it&#39;s worth, I have absolutely no interest in convincing people that my particular approach to truth is the correct one.&amp;nbsp;But I find myself swallowing my tongue when it comes to discussions that revolve around what I&#39;ve come to think of as &quot;Computing Reality&quot;, and that doesn&#39;t feel right either.&lt;br /&gt;
&lt;br /&gt;
Because pretty much everything that happens in my life is framed by the lens of my personal practice and faith tradition, which happens to be the Buddhadharma -- and if I&#39;m going to take the time to write about what I want to write about, it&#39;s going to include that, even if I keep the explicit references to a minimum.&amp;nbsp;To many people, especially us rational technology types, Buddhism seems to be a relatively non-threatening but still fuzzy headed religion that teaches people to be nice to each other, and is maybe a bit&amp;nbsp;&lt;i&gt;too&lt;/i&gt;&amp;nbsp;hip. But to me, it isn&#39;t an &quot;ism&quot; at all -- it&#39;s simply a very honest, rigorous and direct approach to exploring one&#39;s own experience. And my experience is that the world is a pretty magical place.&lt;br /&gt;
&lt;br /&gt;
Ultimately, there is a problem with trying to separate the analytical view from a more sacred vision: when we try to separate spiritual issues from the &quot;real-world&quot;, we&#39;re biasing every single decision we make away from the really deep, basic concerns: What makes people happy? What causes suffering? We don&#39;t have to talk about them all of the time, but we should at least &lt;i&gt;care&lt;/i&gt; about the answers to these questions and resist the temptation to shy away from them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Finding Balance&lt;/h3&gt;
&lt;br /&gt;
So, returning to the question of balancing work, home, and blogging. There are two major competing interests here:&lt;br /&gt;
&lt;br /&gt;
First, I made a real commitment to not work after hours and to spend as much time as I could with my family. As an independent entrepreneur, the workday never really ended, but now that I have a real job&amp;nbsp;I&#39;ve been able to return&amp;nbsp;some basic sanity to my life. I can be more disciplined setting limits, and being able to do that has totally transformed my family life.&lt;br /&gt;
&lt;br /&gt;
Second, it&#39;s also really hard to justify spending time writing blogs during work hours.&amp;nbsp;We all recognize that blogs can be a great tool to help companies communicate, but that&#39;s a pretty soft value, and difficult to offset against immediate actual income producing tasks like delivering on contracts or putting the pieces in place to get that next sale. Tasktop is still a young company, and that means that &lt;i&gt;every&lt;/i&gt; choice we make involves a significant tradeoff. To put it in more stark terms, it&#39;s awfully hard to justify spending the time to write a blog when your colleagues have just spent a good part of the weekend solving a critical customer issue -- time that they are away from &lt;i&gt;their&lt;/i&gt; families.&lt;br /&gt;
&lt;br /&gt;
Finally, there is the issue of what I should write.&amp;nbsp;How can I find a better balance between a) what I know people will actually want to read about: &quot;&lt;i&gt;how can I apply technology X to solve my problem&lt;/i&gt;&quot; -- and b) what I&amp;nbsp;what I want to write about: &quot;&lt;i&gt;what are we doing here, and what if anything does it all mean?&lt;/i&gt;&quot; My blog appears on a number of tech feeds, and I don&#39;t want to abuse that privilege, especially since those questions get into social, philosophical, political and (the scariest word of all) spiritual issues. At the same time,&amp;nbsp;I find myself doing a lot of self-censoring, and I&#39;m feeling more and more uncomfortable about that.&lt;br /&gt;
&lt;br /&gt;
I&#39;d love to hear what other frequent bloggers and blog readers have dealt with making these kind of balances. Please share your experiences by commenting here, or feel free to contact me directly (email milesparker at the email-provider-everyone-else-uses) and I&#39;ll include them in a followup post.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This is what I&#39;ve decided:&amp;nbsp;When it come to pure technology application, I&#39;m going to carve out a bit of work time to write more focussed articles on issues directly relevant to what we&#39;re doing at Tasktop, but I&#39;m going to make sure the human dimension doesn&#39;t get left out.&lt;br /&gt;
&lt;br /&gt;
And I&#39;m also going to take some time at home to write more about the more esoteric -- for lack of a better word -- issues that I want to explore, still rooted in a technical foundation that is relevant as possible to my existing readers but hopefully also inviting to a less technical audience.&amp;nbsp;While I respect that everyone won&#39;t want to hear about my personal experiences and interests, part of finding a balance for me is to bring more of these bigger questions into this blog. That, and yes, model trains, and other things.&amp;nbsp;Real communities don&#39;t make arbitrary divisions between &quot;work&quot; and &quot;life&quot;, and I don&#39;t think we have any business building tools without having an appreciation for the absolute limits of our tools contrasted to the unlimited potential we have as human beings.&lt;br /&gt;
&lt;br /&gt;
Like it or not, as technologists, we&#39;re the priests and priestesses of the Silicon Age. What we do has far more impact on the lives of others than I think most of us appreciate. Many important social, cultural and political innovations have come directly out of the technical community. It&#39;s no accident that the Open Source movement has given rise to some of the most profound cultural changes in the last twenty years. I think it&#39;s time we recognize our changed role in society, and yes, as corny as it sounds, use all of our intelligence, creativity and goodness to make the world a better place for everyone.&lt;br /&gt;
&lt;br /&gt;
A month after I started this blog, I read this poignant&amp;nbsp;&lt;a href=&quot;http://ed-merks.blogspot.ca/2009/04/truly-good-person.html&quot;&gt;post&lt;/a&gt;&amp;nbsp;from Ed Merks, on the loss of his partner of 27 years. No-one who sees the photo of Larry or who reads and contemplates Ed&#39;s poem should have the slightest doubt that all of life&#39;s experiences were meant to be shared.&amp;nbsp;I have to say that reading Ed&#39;s posts was the moment that I felt truly connected to the Eclipse community and to the broader community of technologists out there. So thank you to everyone for being so open, in every sense. I&#39;ll try to return the favour.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
</description><link>http://milesparker.blogspot.com/2013/01/on-computing-reality.html</link><author>noreply@blogger.com (Miles Parker)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-5922670455511057803</guid><pubDate>Wed, 02 Jan 2013 19:27:00 +0000</pubDate><atom:updated>2013-01-07T09:37:47.149-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">gerrit</category><category domain="http://www.blogger.com/atom/ns#">graphics</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">mylyn</category><category domain="http://www.blogger.com/atom/ns#">science</category><category domain="http://www.blogger.com/atom/ns#">tasktop</category><category domain="http://www.blogger.com/atom/ns#">visualization</category><title>Analyzing Gerrit: Java, Knime and Numbers</title><description>&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: 12px; letter-spacing: 0px;&quot;&gt;How much has Gerrit changed software development? &lt;strike&gt;Well, consider that a couple of years ago most of us had never heard of Gerrit, and now it seems that you can’t contribute a line of code without it.&lt;/strike&gt; That’s how I planned to start this post, but it didn’t turn out that way.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;I should have said &quot;and now Miles Parker can&#39;t contribute a line of code without it&quot;. Maybe I should take that as a sign of something...let&#39;s just say that they invented &quot;deny fast-forward&quot; for people like me.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px;&quot;&gt;So originally, this blog was going to be about how Gerrit was eating the world -- how it had come to dominate all software development at Eclipse. Because that’s what I actually thought, even though I had no real evidence to back up that assumption.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;In fact, it turns out that my perception of what was happening in the world at large was completely driven by what has been happening in my little corner of it. The surprising thing about that is that no matter how often that happens to me, it still surprises me that I can hold that much of a cognitive bias, even when I should know better!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Because as I started to look at the global reality rather than my own local knowledge, it quickly became obvious that the use of Gerrit at Eclipse is actually a lot less significant than I had thought.&amp;nbsp;&lt;/span&gt;I had made the classic error of extrapolating an entire curve from two data points. Worse, I had failed to consider that my sample was clearly self-selecting, given that my company makes tools that integrate and converge Application Lifecycle Management (ALM) tools and yep, Gerrit happens to be one of those!&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;At Tasktop and within Mylyn, Gerrit is indeed triumphant. It’s amazing how quickly practices change -- when I arrived at Tasktop, we weren’t really using Gerrit. Now, while it is still technically possible to commit code to our Tasktop internal repositories directly, in practice it very rarely happens. Everything we do flows through Gerrit.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;The two projects I have been most familiar with over the last six months at Eclipse so are Mylyn and EGit. I thought they were the norm, but they turn out to be outliers. That would have been obvious, had I just turned to &lt;a href=&quot;https://git.eclipse.org/r/#/admin/projects/&quot;&gt;&lt;span style=&quot;color: #021eaa; letter-spacing: 0px;&quot;&gt;this page&lt;/span&gt;&lt;/a&gt;. Compare that to the number of&amp;nbsp;&lt;span style=&quot;color: #021eaa; letter-spacing: 0px;&quot;&gt;&lt;a href=&quot;http://git.eclipse.org/c/&quot;&gt;git repositories at Eclipse&lt;/a&gt;&lt;/span&gt;. (And now that the CVS/SVN transition is complete, that includes&amp;nbsp;&lt;i&gt;everyone&lt;/i&gt;.) Counting all of the Mylyn projects separately, that adds up to coverage over 38 projects out of 240 giving an &lt;b&gt;Eclipse Gerrit adoption rate of 15%&lt;/b&gt;. There are 31 “enable gerrit” bugs&amp;nbsp;&lt;span style=&quot;color: #021eaa; letter-spacing: 0px;&quot;&gt;&lt;a href=&quot;https://bugs.eclipse.org/bugs/buglist.cgi?list_id=3958720&amp;amp;short_desc=enable%20gerrit&amp;amp;classification=Eclipse%20Foundation&amp;amp;query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;component=Gerrit&amp;amp;component=Git&amp;amp;product=Community&quot;&gt;listed here&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;(Hopefully that number will be much larger if you happen on this post six months from now.)&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; letter-spacing: 0.0px;&quot;&gt;But what I was interested in was&amp;nbsp;&lt;i&gt;how&lt;/i&gt; the&amp;nbsp;uptake had occurred across projects. I thought it would be neat to begin to get a handle on the social dynamics involved in adopting a disruptive and disrupting technology like Gerrit. And so I got diverted for the next few days by the siren call of data analysis. If you&#39;re interested in the details, see below. But here are the pretty pictures:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; letter-spacing: 0.0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; letter-spacing: 0.0px;&quot;&gt;First, it shouldn&#39;t be surprising that EGit has been running Gerrit form the start -- still, it&#39;s encouraging to see that they are walking the walk. In fact, from my experience working with people contributing to the project, EGit has a very deep Gerrit culture.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; letter-spacing: 0.0px;&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCzwtCATWGEl6yRDCHCcobgmtvBFs-wGSoInFFcNxbYoVOwxRiUGY6mH7oXubGm3s31f91vUAxB0J34GeK4jIP5lMF1n3VkmunMt8hunD5z8T5ERMv2nVxPoVrkRpoMpZsekZP8ixQ_wE/s1600/EgitChart.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;184&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCzwtCATWGEl6yRDCHCcobgmtvBFs-wGSoInFFcNxbYoVOwxRiUGY6mH7oXubGm3s31f91vUAxB0J34GeK4jIP5lMF1n3VkmunMt8hunD5z8T5ERMv2nVxPoVrkRpoMpZsekZP8ixQ_wE/s640/EgitChart.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 13px;&quot;&gt;EGit&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: inherit; text-align: left;&quot;&gt;CDT has had some significant adoption, but they still seem to be in the testing-the-waters phase of adoption.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7WgalgpeTxqYl3yqQv5irc7Y2kaIeFlG2sTx-G7KXP9EpsA11S0Kq9W4_OALCKLDVNpYGxezhz8kp7PMWKFfXsIiBqbGVrsaqWF9IynbUfMWaMZLKBSfNymVptaZ4vh_ApRODFBvj1HU/s1600/CDTChart.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7WgalgpeTxqYl3yqQv5irc7Y2kaIeFlG2sTx-G7KXP9EpsA11S0Kq9W4_OALCKLDVNpYGxezhz8kp7PMWKFfXsIiBqbGVrsaqWF9IynbUfMWaMZLKBSfNymVptaZ4vh_ApRODFBvj1HU/s640/CDTChart.png&quot; width=&quot;640&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;CDT&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: inherit; font-size: 12px;&quot;&gt;Interestingly, both core projects on Gerrit have yet to really adopt Gerrit in anger -- the usage so far is exploratory at best. One of the really interesting things here is that the people involved in these reviews seem to be coming from the EGit community -- a great example of the social coding dynamic in progress.&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;I should point out that even if projects don&#39;t adopt Gerrit wholesale, it is really great to see them support it -- if nothing else because it gives contributors a much better way to get their code into core feature projects. I&#39;ll discuss that issue in more depth in a future post.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;font-size: 12px; margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1_ug-vTDg0WVmQ6V3b1bRdlHAEhwUtdFR4NHGjBArYZztkJMQxjknXDe7YYRJNzmNqCFBSASgn6IpX4kxtIHurLRsQRt1IQqDgiTBi98cmxi_vt-sE5iIMsTxQe02Pvhxg8vKYk3cWJo/s1600/JDT.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;174&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1_ug-vTDg0WVmQ6V3b1bRdlHAEhwUtdFR4NHGjBArYZztkJMQxjknXDe7YYRJNzmNqCFBSASgn6IpX4kxtIHurLRsQRt1IQqDgiTBi98cmxi_vt-sE5iIMsTxQe02Pvhxg8vKYk3cWJo/s640/JDT.png&quot; width=&quot;640&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;JDT Core&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;font-size: 12px; margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbpEqJ6SkeoegHV2S1aU5WdsgRpevA7QTfH3GePNeaJAwckGqZe2YGi7X688bpgp5WpZJaAY5mRnWPsijsN4ZKA98dUx5yooQjh4bZuQDTRJrEePgi5Asw5R-fhC3JGG2I-byWZSTttYM/s1600/Platform.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;198&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbpEqJ6SkeoegHV2S1aU5WdsgRpevA7QTfH3GePNeaJAwckGqZe2YGi7X688bpgp5WpZJaAY5mRnWPsijsN4ZKA98dUx5yooQjh4bZuQDTRJrEePgi5Asw5R-fhC3JGG2I-byWZSTttYM/s640/Platform.png&quot; width=&quot;640&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Platform Resources and Team&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; letter-spacing: 0px;&quot;&gt;And last to Mylyn, which has the most interesting and dramatic uptake.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;/div&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;font-size: 12px; margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3TayyDCiw_AdjYmew1uz9rjM9ki8WeknPn4P1CspchEY56t3e4Wko4LMaMU215YYDA8mgunSC_5CVw6WaUEaybX5n6_VFNdUX2QaOAZcEcyh2C8talkPcY6ZsIKp52XgTE7kH6Wz2FeU/s1600/MylynUptake.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;177&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3TayyDCiw_AdjYmew1uz9rjM9ki8WeknPn4P1CspchEY56t3e4Wko4LMaMU215YYDA8mgunSC_5CVw6WaUEaybX5n6_VFNdUX2QaOAZcEcyh2C8talkPcY6ZsIKp52XgTE7kH6Wz2FeU/s640/MylynUptake.png&quot; width=&quot;640&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Mylyn (All)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: 12px; letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 12px; letter-spacing: 0px;&quot;&gt;Note that the large spike in non-Gerrit changes in October 2012 is an&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;aberration&lt;/span&gt;&lt;span style=&quot;font-size: 12px; letter-spacing: 0px;&quot;&gt;. That&#39;s due to a reformatting of the entire R4E code base -- while I happened to be in the middle of a review,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;necessitating&lt;/span&gt;&lt;span style=&quot;font-size: 12px; letter-spacing: 0px;&quot;&gt;&amp;nbsp;the &quot;rebase from hell&quot; -- but that&#39;s a story for another time, perhaps with a cocktail in hand...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: 12px; letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 12px; letter-spacing: 0px;&quot;&gt;If we look at the overall ratio of commits, the picture is even more dramatic:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF2tmbV6jRb6w6VEE-6mvTT6Zj-g-uLzikcZnxgF4VnBrCMOKVJCyxP5UYQHG6lXYLIu5Wpkgy3lQIBucoMjrM1NqTtInb7ZdPIK9soGQojewoiDM4pASOhmYH9hQm0BH54qDgHN3xcb8/s1600/MylynRatio.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;458&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF2tmbV6jRb6w6VEE-6mvTT6Zj-g-uLzikcZnxgF4VnBrCMOKVJCyxP5UYQHG6lXYLIu5Wpkgy3lQIBucoMjrM1NqTtInb7ZdPIK9soGQojewoiDM4pASOhmYH9hQm0BH54qDgHN3xcb8/s640/MylynRatio.png&quot; width=&quot;640&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Mylyn (All) Gerrit Usage&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: 12px; letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;That&#39;s going from 0% Gerrit usage to 75% in a little over a year&#39;s time. I&#39;m biased, but I think that&#39;s pretty cool. It&#39;s also&amp;nbsp;&lt;/span&gt;a perfect example of the kind of thing that Eclipse&#39;s strong emphasis on meritocracy and strong project leadership enables.&amp;nbsp;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;Leadership -- in this case, Steffen Pingel -- is critical in driving these kind of deep changes in practice, because they hold the supply of carrots and sticks necessary to make people adopt it. Developers like to do things the way they&#39;ve always done them before -- and so while sometimes we adopt these changes happily, other times we have to be dragged in kicking and screaming. Because it isn&#39;t always an easy transition to make, and it&#39;s not without cost -- an issue I&#39;ll cover in an upcoming post. The bottom-line is that it would be hard to imagine an open source project making this kind of transition organically.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: 12px; letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 12px; letter-spacing: 0px;&quot;&gt;The Tasktop transition has been even more dramatic, but for obvious reasons I can&#39;t show you the chart for that. One advantage of internal development over Open Source is that you can simply legislate adoption of new best practices -- you don&#39;t have to wait for the community to decide to go along with it!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: 12px; letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;h3&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;
Methodology&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; letter-spacing: 0px;&quot;&gt;Since you (didn&#39;t) ask, here&#39;s how I made the pretty picture. By the way, I really like the word &quot;methodology&quot;. It sounds a lot more scientific than &quot;how I did this&quot;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; letter-spacing: 0px;&quot;&gt;Since there is no simple way to say &quot;give me all of the git projects that use Gerrit&quot;, I took the following approach:&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit; font-size: 12px;&quot;&gt;Collected all commits to master from the git log. This ensures that we only count those Gerrit reviews that actually make it in.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit; font-size: 12px;&quot;&gt;Counted any commit that had &quot;Change-Id:&quot; in the message as a &quot;Gerrit Commit&quot;.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;h4 style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; letter-spacing: 0px;&quot;&gt;Collecting the Git Log&lt;/span&gt;&lt;/h4&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Because I was too lazy to learn bash and too snobbish to use Perl, I spent far too much time creating a git log reader/translator in Java. It turned out to be the kind of thing that you-would-never-do-had-you-known-before-hand-how-long-it-was-going-to-take. But now that I&#39;ve done it, perhaps it will be helpful to someone else. You can find all of the source code along with the data I collected in my&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/MilesParker/GerritAnalysisTools/tree/master/name.milesparker.gerrit.analysis&quot; style=&quot;letter-spacing: 0px;&quot;&gt;GerritAnalysisTools GitHub project&lt;/a&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;The relevant code is &lt;a href=&quot;https://github.com/MilesParker/GerritAnalysisTools/blob/master/name.milesparker.gerrit.analysis/src/name/milesparker/gerrit/analysis/CollectGit.java&quot;&gt;here&lt;/a&gt;. All I&#39;m really doing is executing the git command themselves, and then parsing the resulting&amp;nbsp;&lt;/span&gt;unhelpfully&amp;nbsp;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;verbose git log data into a more structured format.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Execute it like this:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;b&gt;Main class:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;font-family: inherit; letter-spacing: 0px;&quot;&gt;name.milesparker.gerrit.analysis.CollectGit&lt;/span&gt;&lt;/pre&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;b&gt;Arguments:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;span style=&quot;font-family: inherit; letter-spacing: 0px;&quot;&gt;&quot;{Base Git Directory}&quot; &quot;{Data Output Directory}&quot; &quot;{git project names, comma seperated}&quot;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;
&lt;/h4&gt;
&lt;h4 style=&quot;font-size: 12px;&quot;&gt;
&lt;span style=&quot;font-family: inherit; letter-spacing: 0px;&quot;&gt;Analyzing the Data&lt;/span&gt;&lt;/h4&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;I used Knime for this next part. Except for the fact that they use GPL, and I have&amp;nbsp;&lt;a href=&quot;http://milesparker.blogspot.ca/2010/11/is-gpl-damaging-to-your-ecosystems.html&quot;&gt;some reservations&lt;/a&gt;&amp;nbsp;about that, it is a really neat Eclipse-based project. If you have any interest in Data Analysis (call it &quot;Big Data&quot; if you want to sound hip), you really should check it out. Knime also demonstrates that Visual Languages can work, if the domain it appropriate and reasonably specific.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;This is what my workflow ended up looking like:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmW3YKLe6wcbK-h5sZrgiSrfPf-Fw_cqU32HeX15EoQUatOz4wibyTuLs7hyphenhyphenaaMI6N__RVo46AbAmF1R8vVfohRHka_C6iiYD9P9A0puHDpHSpRZNY9FWd1SzNOG202wsOALwG_jOAZY4/s1600/KnimeNodesMylyn.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmW3YKLe6wcbK-h5sZrgiSrfPf-Fw_cqU32HeX15EoQUatOz4wibyTuLs7hyphenhyphenaaMI6N__RVo46AbAmF1R8vVfohRHka_C6iiYD9P9A0puHDpHSpRZNY9FWd1SzNOG202wsOALwG_jOAZY4/s400/KnimeNodesMylyn.png&quot; width=&quot;355&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;Here are the actual steps, going in row order:&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;min-height: 14px;&quot;&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit; font-size: 12px;&quot;&gt;Read in the file, renaming and cleaning up the columns in the process. (Looking back, I could have done a lot of the preliminary parsing work that I did in Java here, but that probably would have been significantly slower and pointless, given that most of the java side stuff was regexp manipulation.)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit; font-size: 12px;&quot;&gt;Coerced the strings into time objects, and pulled out the Year and Month into a single Year/Month column for binning purposes. (See steps 4.2 and 4.3 below.)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit; font-size: 12px;&quot;&gt;Added up the values for Insertions and Deletions into a single Changes column.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit; font-size: 12px;&quot;&gt;Manipulated the data.&lt;b&gt; This is the interesting part, and the kind of thing that Knime kicks ass at. &lt;/b&gt;If you&#39;ve ever gotten frustrated playing with pivot tables and groups in Excel and wondered why someone couldn&#39;t do a better job at this -- someone has.&lt;/span&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit; font-size: 12px;&quot;&gt;Calculated the domains for dates&amp;nbsp;and the Gerrit flag. Calculating domains basically creates a full enumeration of all possible values in a given column, allowing Knime to handle them efficiently in down stream nodes.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit; font-size: 12px;&quot;&gt;Grouped the data by Year/Month and the Gerrit flag. This collapses each set of rows with a unique combination of those two values into a single row applying whatever aggregation measures you want to use. In this case, I simply summed everything up.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit; font-size: 12px;&quot;&gt;Pivoted out the Gerrit flag. Form the previous step, each unique Year/Month has two rows -- one for each possible Gerrit value. The pivot takes the values in the two rows and creates new columns for each of these possible Gerrit values. (This is the kind of thing that is much more difficult to explain than it is to see for yourself, so I&#39;ve included captures of the before and after below.)&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit; font-size: 12px;&quot;&gt;Cleaned up the column names.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit; font-size: 12px;&quot;&gt;Built Interactive tables, histograms, and scatter plots.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: inherit; font-size: 12px;&quot;&gt;Those are cool, but &lt;b&gt;they aren&#39;t terribly attractive&lt;/b&gt;. So I wrote everything out to a CSV file, which I use in the Visualizaiton section below.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;ol style=&quot;font-size: medium;&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcnJfm3Pvslcyssa-EWgLONkfnatqksdHC_hU_Lw4q_1PJAZmAqbnq4EejB2jLenvfidUuDemjwKARdTch08mVUFjl2aa0rKi8NbRuaKKRCU2Yu-PAVLBVglMV01xG9IWv9Vp-2G-azHM/s1600/KnimeTable3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;181&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcnJfm3Pvslcyssa-EWgLONkfnatqksdHC_hU_Lw4q_1PJAZmAqbnq4EejB2jLenvfidUuDemjwKARdTch08mVUFjl2aa0rKi8NbRuaKKRCU2Yu-PAVLBVglMV01xG9IWv9Vp-2G-azHM/s320/KnimeTable3.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Step 3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;ol style=&quot;font-size: medium;&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9k8ZfRiPP4Pf3aK_sYxklO6qy5VSYd0oc0frvlKlhVfgm_NJA54w9Qe1v1AFJmsTmjaIpkPecmK51GNqEgD-Yc6lgsn4er_n0nYD-7W1MJKy-YySr85Pr63LsZPq3pKx97-m8WLhDIfE/s1600/KnimeTable4_2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;210&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9k8ZfRiPP4Pf3aK_sYxklO6qy5VSYd0oc0frvlKlhVfgm_NJA54w9Qe1v1AFJmsTmjaIpkPecmK51GNqEgD-Yc6lgsn4er_n0nYD-7W1MJKy-YySr85Pr63LsZPq3pKx97-m8WLhDIfE/s320/KnimeTable4_2.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Step 4.2&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjegVoDpzqyUA0F7C8IFlk4RglvF_z9_5m8Nsj_Js_VZGtNi11FBS2kCYg3gIw2yHiI74UHH3pI4jSjj4riYVHr1q1HWbR2MxEzDh39IzXAWJAHcIT-OoJMCUs4foCEXk78xJPD5i3dN3k/s1600/KnimeTable4_3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;215&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjegVoDpzqyUA0F7C8IFlk4RglvF_z9_5m8Nsj_Js_VZGtNi11FBS2kCYg3gIw2yHiI74UHH3pI4jSjj4riYVHr1q1HWbR2MxEzDh39IzXAWJAHcIT-OoJMCUs4foCEXk78xJPD5i3dN3k/s320/KnimeTable4_3.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ol style=&quot;font-size: medium; text-align: -webkit-auto;&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Step 4.3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/ol&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6fEypx1ICnT0f1ZJs7xFA2xhZJFXckcJfiXBqOdhnzVxKIgXQTw90GIvv50TRGZ0JVEQJ6xeTZhimZ7dEfKt646QtRxzNwHfg9u9Vg8M18_wMNFXQHOBVYrpaYKMgqlCPBQHihXIoNJ8/s1600/KnimeGraphMylyn.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;508&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6fEypx1ICnT0f1ZJs7xFA2xhZJFXckcJfiXBqOdhnzVxKIgXQTw90GIvv50TRGZ0JVEQJ6xeTZhimZ7dEfKt646QtRxzNwHfg9u9Vg8M18_wMNFXQHOBVYrpaYKMgqlCPBQHihXIoNJ8/s640/KnimeGraphMylyn.png&quot; width=&quot;640&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Step 6&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h4&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;
Presenting the Data&lt;/span&gt;&lt;/h4&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;Since I care about what the Data looks like, and the Knime output looks like it was drawn on an Etch A Sketch, I took one more step, and exported the data into an Apple Numbers spreadsheet. I played around until I got things looking okay -- but you can judge that for yourself, because it&#39;s what I ended up with above. The good thing about Numbers is that it produces nice looking charts, and has a typically charming and simple Apple User Experience. The bad thing about Numbers is that it is a horrible application for getting any real data work done. I guess it&#39;s fine for displaying your company&#39;s astounding next quarterly profit return -- thus making great demos for Apple press events -- but it chokes when presented with any significant workload. By chokes, I means &quot;freezes and crashes&quot; -- not really acceptable behaviour for any software made in 2012.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;
Denouement&lt;/span&gt;&lt;/h3&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;I forced myself to stop playing around with Numbers -- &amp;nbsp;so that I could move on to something more productive, like actually writing this blog entry. The one that was supposed to take just a few hours, and ended up taking 2 1/2 days. But the nice thing is that I now have a repeatable process for creating pretty pictures of stuff that people could probably get a pretty good idea about anyway just by doing a few basic searches and looking at the text results. But hey, isn&#39;t that what Data Analytics is all about?&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-size: 12px; min-height: 14px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/div&gt;
</description><link>http://milesparker.blogspot.com/2013/01/analyzing-gerrit-java-knime-and-numbers.html</link><author>noreply@blogger.com (Miles Parker)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCzwtCATWGEl6yRDCHCcobgmtvBFs-wGSoInFFcNxbYoVOwxRiUGY6mH7oXubGm3s31f91vUAxB0J34GeK4jIP5lMF1n3VkmunMt8hunD5z8T5ERMv2nVxPoVrkRpoMpZsekZP8ixQ_wE/s72-c/EgitChart.png" height="72" width="72"/><thr:total>10</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-1524998617716368887</guid><pubDate>Wed, 09 May 2012 18:53:00 +0000</pubDate><atom:updated>2012-05-09T14:58:34.892-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">life</category><category domain="http://www.blogger.com/atom/ns#">tasktop</category><category domain="http://www.blogger.com/atom/ns#">virgo</category><title>Virgo Tooling M4</title><description>I&#39;m happy to announce that the Virgo Tooling M4 release is available. If you just want to find out more about that, skip ahead to the section below...&amp;nbsp;But I realized that it&#39;s been a long time since I&#39;ve posted and thought I&#39;d use this opportunity to update folks on what I&#39;ve been up to and give some background about the &lt;a href=&quot;http://wiki.eclipse.org/Virgo/Tooling&quot;&gt;Virgo Tooling&lt;/a&gt; effort.&lt;br /&gt;
&lt;br /&gt;
I&#39;ve been really focussed on Tasktop projects during the day and haven&#39;t had much time to surface out into the broader open source development world. I&#39;m also using the excuse of having a real job to try to have a life -- like spending time with our 1 1/2, 3 and 10 year olds and giving mom a break every once in a while, having time to reengage with meditation practice, and even spending a couple of hours a week getting our model train layout built. Basically, trying to ween myself away from the 24-hour a day developer mentality that seems to creep in when you&#39;re working on your own. One of the things that I&#39;ve really appreciated about being at Tasktop is the family focus here; generally people actually go home at a sane hour of the day -- all too rare in the startup world. So I&#39;ve been working at calling it a day around six (OK, sometimes I don&#39;t stick to that) and I&#39;ve committed myself to no more late night blogging sessions! Still, I&#39;m going to try to squeeze in some more blogs now that I&#39;m settled in a bit. And this one happens to have an official purpose -- I want to share where we are with the Virgo Tooling effort.&lt;br /&gt;
&lt;br /&gt;
Interestingly, one of the first things I started working on after joining Tasktop was Virgo Tooling; a perhaps less known aspect of Tasktop is that we partner with other companies to support Eclipse-related tools development efforts that aren&#39;t neccesarily Task related. (I have to say that that probably has something to do with the excellent reputation Tasktop engineering has in the Eclipse community. If you&#39;re interested in joining us, I should&amp;nbsp;mention that we&#39;re &lt;a href=&quot;http://tasktop.com/about/careers&quot;&gt;hiring&lt;/a&gt;.) And&amp;nbsp;we have a great relationship with the folks at SpringSource, now part of VMware. Leo Dos Santos, Ducky Sherwood and others have contributed a lot to the STS and other tools.&lt;br /&gt;
&lt;br /&gt;
Now, I&#39;ve never really been a web-centric developer, so I hadn&#39;t been exposed to all of the great tools that SpringSource has provided over the years. VMware and SpringSource have very genorously donated big chunks of these tools to the Eclipse project.&amp;nbsp;We&#39;re helping to take the foundation provided by the Spring Source tools and integrating them with the entire stack of Eclipse runtime, web and plugin development tools.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;
But Virgo is definitely not just for web developers.&amp;nbsp;In a nutshell, it allows users to run OSGi bundles easily from web services (but it does a lot more than that).&amp;nbsp;What that means for Eclipse developers is that we now have a way to easily deliver all of the features our plugins provide outside of the Eclipse UI box.&amp;nbsp;Because of that capability, Virgo is the one part of the stack that I did have prior experience with. I spent a bit of time working with the Virgo runtime when I wanted to deploy some EMF editors as RAP applications. I was having a hell of a time getting this to work on a bare Tomcat server, and Virgo made all of that easy.&amp;nbsp;As I said I said in&amp;nbsp;&lt;a href=&quot;http://milesparker.blogspot.ca/2010/12/emf-and-rap-and-virgo-oh-my.html&quot;&gt;this post&lt;/a&gt;&amp;nbsp;last year, &quot;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif; font-size: 12px;&quot;&gt;I haven&#39;t been that impressed by a technology that &quot;just worked&quot; since the first time I built an EMF model and editor&quot;.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
A lot of the work that Leo and I started out on was a bit mundane, really -- sometimes there are things you just need to do in order to move ahead.&amp;nbsp;One of the biggest things we&#39;ve taken care of is excising all of the pesky dependencies from Virgo to the originating Spring Source tooling. That turned out to be a really big job, and it was kind of interesting work hunting all of these pieces down and finding replacements for them or in many cases, removing redundant or non-relvant code altogether. There is something rewarding about making code smaller and more modular. Naturally, we also worked a lot on updating features, branding, etc.. -- all of the necessary overhead that comes along with being an Eclipse project.&lt;br /&gt;
&lt;br /&gt;
But after tackling all of that, we&#39;ve had some time to make some improvements that you can actually see. Here are the biggest changes that you&#39;ll see in the latest version. (By the way, wondering what happened to M3? There wasn&#39;t one -- we&#39;re synching our milestones up to the Virgo Runtime releases, so we skipped it.)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;titlepage&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class=&quot;title&quot; style=&quot;clear: both;&quot;&gt;



&lt;/h2&gt;
&lt;h2&gt;

What&#39;s new in M4&lt;/h2&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 15px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h3 class=&quot;title&quot; style=&quot;font-size: medium;&quot;&gt;

Improved Server Support&lt;/h3&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 15px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; title=&quot;Improved Server Support&quot;&gt;
Virgo now supports almost all versions and types of Virgo installs, including older versions of Virgo and Tomcat, Jetty and Kernel installations. Best of all, you can now define servers using a single Server Runtime and the tooling will automatically discover the appropriate server configurations. You can even change server installations and versions for server runtimes without having to maintain any server settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;mediaobject&quot;&gt;
&lt;img height=&quot;464&quot; src=&quot;http://git.eclipse.org/c/virgo/org.eclipse.virgo.ide.git/plain/org.eclipse.virgo.ide.doc/tooling/images/whats-new-M4-server.png&quot; width=&quot;640&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; title=&quot;UI&quot;&gt;
&lt;div class=&quot;titlepage&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 class=&quot;title&quot;&gt;




&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=1706439134994847071&quot; name=&quot;UI&quot;&gt;&lt;/a&gt;UI&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
We&#39;ve provided a number of new features aimed at improving the user experience. We&#39;ve been giving more transparency and leverage into what&#39;s actually happening on the server. Right now, interactions with the server involve frequent shifts back and forth between the Eclipse IDE, the native file system and the command line. Our ultimate goal is to have tools powerful and complete enough that you can work with the server without ever having to move out of Eclipse.&lt;br /&gt;
&lt;div class=&quot;section&quot; title=&quot;Virgo Perspective&quot;&gt;
&lt;div class=&quot;titlepage&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 class=&quot;title&quot;&gt;




&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=1706439134994847071&quot; name=&quot;Virgo_Perspective&quot;&gt;&lt;/a&gt;Virgo Perspective&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
You can now get your own perspective on Virgo. We&#39;ve organized it to support runtime exploration but it should be usable for general development as well. Please give us feedback on the overall setup; we&#39;ll incorporate the feedback in future releases.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;mediaobject&quot;&gt;
&lt;img height=&quot;428&quot; src=&quot;http://git.eclipse.org/c/virgo/org.eclipse.virgo.ide.git/plain/org.eclipse.virgo.ide.doc/tooling/images/whats-new-M4-perspective.png&quot; width=&quot;640&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; title=&quot;Views&quot;&gt;
&lt;div class=&quot;titlepage&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 class=&quot;title&quot;&gt;




&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=1706439134994847071&quot; name=&quot;Views&quot;&gt;&lt;/a&gt;Views&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
When we talked to current users of the Spring Source / Virgo tools, one of the things we discovered is that there were a lot of features that they wanted to have us implement that actually already existed, but in many cases were buried somewhere -- in many cases on a page in the server editor. So we&#39;re providing some of the information and tools that are provided in the WTP-based Server Editor as stand-alone views and enriching it. The idea is provide better insight into what&#39;s happening on the server side. Some of these features involve significant changes to how server resources are treated and we&#39;d appreciate your feedback on how well they work for your usage scenarios. We&#39;ll use these changes as a basis for further enhancements.&lt;br /&gt;
&lt;div class=&quot;section&quot; title=&quot;Outline View&quot;&gt;
&lt;div class=&quot;titlepage&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h5 class=&quot;title&quot;&gt;




&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=1706439134994847071&quot; name=&quot;Outline_View&quot;&gt;&lt;/a&gt;Outline View&lt;/h5&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
As a first take at helping users find what they&#39;re looking for, we provided an outline view that gives quick access to server artifacts.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;mediaobject&quot;&gt;
&lt;img height=&quot;300&quot; src=&quot;http://git.eclipse.org/c/virgo/org.eclipse.virgo.ide.git/plain/org.eclipse.virgo.ide.doc/tooling/images/whats-new-M4-outline-view.png&quot; width=&quot;640&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; title=&quot;Artifacts View&quot;&gt;
&lt;div class=&quot;titlepage&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h5 class=&quot;title&quot;&gt;




&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=1706439134994847071&quot; name=&quot;Artifacts_View&quot;&gt;&lt;/a&gt;Artifacts View&lt;/h5&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
A new view supports transparent access to runtime artifacts. Currently, you can view bundle jars and libraries, but we&#39;d like to support plans, pars, properties and other artifact types as well. But the real news is what we&#39;ve built behind this -- Virgo runtimes are now exposed as Eclipse projects, giving you full access to the contents of jars, including classes. You can even use JDT tools like the Type view on Server side jar contents.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;mediaobject&quot;&gt;
&lt;img height=&quot;308&quot; src=&quot;http://git.eclipse.org/c/virgo/org.eclipse.virgo.ide.git/plain/org.eclipse.virgo.ide.doc/tooling/images/whats-new-M4-artifacts-view.png&quot; width=&quot;640&quot; /&gt;&lt;/div&gt;
&lt;br /&gt;
All of the new views are supported through the Eclipse Common Navigator Framework (CNF), which means that the views are highly configurable, and we&#39;ve provided buttons to allow you to easily toggle on and off artifact types and present the artifacts in a tree or list view so that you can see all installed jars in one place.&lt;/div&gt;
&lt;div class=&quot;section&quot; title=&quot;Servers View&quot;&gt;
&lt;div class=&quot;titlepage&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h5 class=&quot;title&quot;&gt;




&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=1706439134994847071&quot; name=&quot;Servers_View&quot;&gt;&lt;/a&gt;Servers View&lt;/h5&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
And because the views are all supported through CNF, you can easily customize them. For example, currently you can access all of the bundle information from the server view -- but we&#39;ll probably disable that by default in the release. In any case, you can set it up anyway you want by adding or removing the content provider. Again please let us know if you think of a way that we can improve the user experience for you.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;mediaobject&quot;&gt;
&lt;img height=&quot;550&quot; src=&quot;http://git.eclipse.org/c/virgo/org.eclipse.virgo.ide.git/plain/org.eclipse.virgo.ide.doc/tooling/images/whats-new-M4-servers-view.png&quot; width=&quot;640&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; title=&quot;Documentation and Help&quot;&gt;
&lt;div class=&quot;titlepage&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3&gt;



Documentation and Help
&lt;/h3&gt;
&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=1706439134994847071&quot; name=&quot;Documentation_and_Help&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
The complete virgo documentation set -- including the Tooling, Programmer and User&#39;s Guide as well as the Wiki pages -- is now included as Eclipse Help.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;mediaobject&quot;&gt;
&lt;img height=&quot;465&quot; src=&quot;http://git.eclipse.org/c/virgo/org.eclipse.virgo.ide.git/plain/org.eclipse.virgo.ide.doc/tooling/images/whats-new-M4-help.png&quot; width=&quot;640&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; title=&quot;Installation Process&quot;&gt;
&lt;div class=&quot;titlepage&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 class=&quot;title&quot;&gt;



&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=1706439134994847071&quot; name=&quot;Installation_Process&quot;&gt;&lt;/a&gt;Installation Process&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
Virgo Tools can now be installed from a single update site location.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;section&quot; title=&quot;Quality&quot;&gt;
&lt;div class=&quot;titlepage&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 class=&quot;title&quot;&gt;



&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=1706439134994847071&quot; name=&quot;Quality&quot;&gt;&lt;/a&gt;Quality&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;itemizedlist&quot;&gt;
&lt;ul class=&quot;itemizedlist&quot; type=&quot;disc&quot;&gt;
&lt;li class=&quot;listitem&quot;&gt;Extensive bug fixes and re-factorings.&lt;/li&gt;
&lt;li class=&quot;listitem&quot;&gt;All Remaining Spring Dependencies have been removed.&lt;/li&gt;
&lt;li class=&quot;listitem&quot;&gt;Updated to meet Eclipse branding, packaging build and testing standards.&lt;/li&gt;
&lt;li class=&quot;listitem&quot;&gt;And yeah, there are still a lot of open bugs.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div class=&quot;titlepage&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 class=&quot;title&quot;&gt;


&lt;/h3&gt;
&lt;h2&gt;

Check it out&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
So what are you waiting for? Get the milestone at&amp;nbsp;&lt;a href=&quot;http://download.eclipse.org/virgo/milestone/tooling&quot;&gt;http://download.eclipse.org/virgo/milestone/tooling&lt;/a&gt;. You can download a Runtime to go with it here:&amp;nbsp;&lt;a href=&quot;http://www.eclipse.org/virgo/download/milestones.php&quot;&gt;http://www.eclipse.org/virgo/download/milestones.php&lt;/a&gt;. (Hey, auto-provisioning of a runtime -- now that would be a cool little feature..)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description><link>http://milesparker.blogspot.com/2012/05/virgo-tooling-m4.html</link><author>noreply@blogger.com (Miles Parker)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-7709848527192187582</guid><pubDate>Tue, 10 Jan 2012 02:06:00 +0000</pubDate><atom:updated>2012-01-09T18:06:26.708-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">life</category><title>Joining the Tasktop Team</title><description>Last week I said that I had some really exciting news to share, and this is it: As of today, I am part of the Tasktop team. I&#39;ve long been an admirer of Tasktop, for a number of reasons...&lt;br /&gt;
&lt;br /&gt;
First, as all Eclipse users know already, they&#39;ve built some really cool Eclipse technology including the Mylyn task-focussed interface. But many companies have built cool open source tools...&lt;br /&gt;
&lt;br /&gt;
More impressive is to take those cool ideas, discipline them and build a growing, dynamic company on top of them. But plenty of companies have also done that...&lt;br /&gt;
&lt;br /&gt;
But what&#39;s really impressed me about Tasktop -- what&#39;s made me want to join rather than observe the effort -- is that Tasktop has gone far beyond the &quot;packaged solution with bundled service and support&quot; that typifies most open source derived business efforts. Many companies take a &quot;fill-in-the-blank&quot; approach to open source business models, creating a captive open source market around their offering.&amp;nbsp;Tasktop has created and&amp;nbsp;nurtured a healthy open source eco-system around core open source offerings, but it then re-imagines and re-purposes the technology, leveraging that technology and expertise to uniquely address real customer pain. That takes real vision, and to me it&#39;s a clear signal that the Tasktop leadership is able to imagine &lt;i&gt;and&lt;/i&gt; execute at an entirely different energy level.&lt;br /&gt;
&lt;br /&gt;
So I first approached Mik and David in the middle of last year to discuss what they were doing and how I might add real value to the effort. That lead into consulting work with Tasktop last year developing the &lt;a href=&quot;http://milesparker.blogspot.com/2011/09/mylyn-modeling-love.html&quot;&gt;initial implementation&lt;/a&gt; of what has become the &lt;a href=&quot;http://www.eclipse.org/projects/project.php?id=mylyn.context.mft&quot;&gt;Model Focusing Tools&lt;/a&gt; project. That was a great opportunity to get to know some of the team and the Tasktop way. Everything I saw then fit nicely with what I&#39;d already intuited. We have a really great combination of engineering excellence, creativity, and light-weight organization.&lt;br /&gt;
&lt;br /&gt;
It&#39;s nice to say &quot;we&quot; again after over seven years of working by myself or as part of a small team.&amp;nbsp;Yes, I had a lot of close associations with very smart and capable folks through collaborative science efforts and open source projects, but it just isn&#39;t the same thing if you&#39;re not working toward a shared set of goals. And&amp;nbsp;I hadn&#39;t realized just how much I&#39;d missed having colleagues to work with on hard problems together until I got involved in that last project.&lt;br /&gt;
&lt;br /&gt;
This morning as I&#39;ve checked in my email, I&#39;ve been getting emails from everyone at Tasktop welcoming me to the team. I must admit to a bit of cynicism about the whole &quot;team&quot; thing -- like so much else, it often seems an empty set of words that don&#39;t match up at all to reality -- but in this case it feels very genuine. So heartfelt thanks to everyone -- I&#39;m working remotely so I won&#39;t get to meet you in person right away, but I look forward to it. And don&#39;t worry, you won&#39;t have to &lt;a href=&quot;http://milesparker.blogspot.com/2011/06/indolent-programming-manifesto.html&quot;&gt;&quot;buy me lunch&quot;&lt;/a&gt;. ;)&lt;br /&gt;
&lt;br /&gt;
(And yes, I&#39;m afraid to say that you&#39;ll still be seeing irreverent and irrelevant blog entries on Eclipse Planet, but I am going to try to keep a closer eye on the four-letter word count.)&lt;br /&gt;
&lt;br /&gt;
Obviously I&#39;m going to be focussed on and very occupied with my new role at Tasktop, and you may be wondering how this will affect the other efforts I&#39;m involved in... With the &lt;a href=&quot;http://milesparker.blogspot.com/2012/01/butterflyzer-beta.html&quot;&gt;new Beta&lt;/a&gt;, Butterflyzer has grown wings -- or for the crossword lovers out there, it&#39;s pre-Imago. That&#39;s as much as I can say right now, except I&#39;ll continue to keep a close eye on its&amp;nbsp;maturation process. I&#39;ll also still be leading the Agent Modeling Platform, doing what I can in my off-time to support builds and provide project leadership.&amp;nbsp;The project provides a wide-array of functionality now, and pretty decent quality.&amp;nbsp;Now it is time for people who are interested in moving the ABM effort forward to step up to the plate with their own time and energy.&amp;nbsp;I think the future of tools for modeling real world systems at Eclipse is very bright.&lt;br /&gt;
&lt;br /&gt;
As I said last week it&#39;s an exciting time to be building software tools! I know it sounds funny, but I like to think of software development as a helping profession. That&#39;s because I think that software products really can help people live more fulfilling, interesting and even happy lives. And I&#39;m delighted to be at Tasktop helping to create those tools.</description><link>http://milesparker.blogspot.com/2012/01/joining-tasktop-team.html</link><author>noreply@blogger.com (Miles Parker)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-1699115306399075391</guid><pubDate>Fri, 06 Jan 2012 21:32:00 +0000</pubDate><atom:updated>2012-01-06T13:32:31.768-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business</category><category domain="http://www.blogger.com/atom/ns#">butterflyzer</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">graphics</category><category domain="http://www.blogger.com/atom/ns#">mylyn</category><category domain="http://www.blogger.com/atom/ns#">osx</category><category domain="http://www.blogger.com/atom/ns#">visualization</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Butterflyzer Beta</title><description>When Butterflyzer was launched a year ago it was introduced with the following words:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;&quot;Butterflyzer is in Alpha now. Before we release more polished versions, we need to know if people really want it. So if you like it and want to see a full version, follow us on twitter, and tell your friends. If we get 10 followers we&#39;ll release an alpha version. If we get 100 followers we&#39;ll release a beta. If we get 250 followers, we&#39;ll make a nicely packaged version available commercially at a decent price. Simple as that.&quot;&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;
A minor problem.. the response was so great that we achieved the Beta milestone in a few months. And the software just wasn&#39;t there in terms of Beta quality. Plus, I felt that there were a number of key improvements to the interface and other functionality that just had to be made. So, it&#39;s been six months since we hit the milestone, and I&#39;m happy to announce that..&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif; font-size: x-large;&quot;&gt;The Beta is Finally Here!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: green;&quot;&gt;&lt;a href=&quot;http://butterflyzer.com/index.php/download&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;Download Butterflyzer Now&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
We&#39;ve had a Beta Preview available for some time, so many of the features won&#39;t be news to all of our users, but I think the level of polish -- if you can talk about a beta release having polish -- is pretty good. There will certainly be issues with it (that&#39;s why we have betas!) but it is otherwise feature complete and ready to go to version 1.0. If you&#39;re wondering how much work has gone into the release, I&#39;ll throw out one measure: the Beta release is Build #995. Here are just some of the many issues big and small that we&#39;ve addressed along the way..&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;User Interface&lt;/h4&gt;&lt;br /&gt;
The application just didn&#39;t fit in well with the target audience and their expectations about how web related tools should look and feel. One of the most important pieces of feedback I heard was that the interface just felt overwhelming. There is a lot that you can do with Butterflyzer, and I wanted to find a way to make that functionality easily accessible while de-cluttering the user environment as much as possible.&lt;br /&gt;
&lt;br /&gt;
The Butterflyzer Alpha was a typical Rich Client (RCP) application built on the rock-solid and powerful Eclipse platform -- the same one that IBM and other leading software companies base their applications on. The downside of that is that the current Eclipse UI support is a bit stodgy. And unfortunately, while the Eclipse environment provides a lot of functionality, it is very difficult to change the overall look and feel. (E4 makes huge improvements in this area, but E4 didn&#39;t address all of our requirements and isn&#39;t quite mature enough yet.) So we went back to the drawing board, moved a bunch of stuff around, and re-implemented key existing functionality, including interface and workbench components. It wasn&#39;t simple to make these changes, but I think they were more that worthwhile. In fact, I think they were necessary. You can build the most powerful, feature-rich program in the world, but if the UI isn&#39;t any good, the only people who use it will be the people who don&#39;t have any other choice. So yep, we sweated those single pixels.&lt;br /&gt;
&lt;br /&gt;
&lt;h5&gt;Browser Look and Feel&lt;/h5&gt;&lt;br /&gt;
In the quest for simplification, Butterflyzer copies the overall presentation of a typical web browser like Safari, Chrome or Firefox. Catalogs are like browser tabs and all of the interface elements are consolidated within them. That means that we&#39;ve essentially turned the typical end-user application inside out, with all of the tools and views being hosted inside each editor.&lt;br /&gt;
&lt;br /&gt;
Here&#39;s what the old application looked like:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgymma0XIaYekjKAtzbNcAL1tetGe4WbWwNqxi92DVKAj9JE8o3u1bZZSEcb5ely1xANIzVVKJAUU2Z-IKwFNf8O1ls-MxDm0U56MgghIIP-OMCwn0ETHFK6rR8KLNdFAsLpUYYVdHlCvM/s1600/BetaBlogOldApp.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgymma0XIaYekjKAtzbNcAL1tetGe4WbWwNqxi92DVKAj9JE8o3u1bZZSEcb5ely1xANIzVVKJAUU2Z-IKwFNf8O1ls-MxDm0U56MgghIIP-OMCwn0ETHFK6rR8KLNdFAsLpUYYVdHlCvM/s1600/BetaBlogOldApp.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
And here&#39;s chrome, our simplicity bogey:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1WXz5ZGBym3gwbeLvia-jkiMCT7ZKQuK6bgN80-8y8_szGMvuIy4AJY2P9p5f-j5HpBBPusNagkFuyQJzKQefp9H1HxW25Zwi-byJH2WvG6_5DZ_YwVsCzooUsKtZsBQNs2l3rgO9tYw/s1600/BetaBlogChrome.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1WXz5ZGBym3gwbeLvia-jkiMCT7ZKQuK6bgN80-8y8_szGMvuIy4AJY2P9p5f-j5HpBBPusNagkFuyQJzKQefp9H1HxW25Zwi-byJH2WvG6_5DZ_YwVsCzooUsKtZsBQNs2l3rgO9tYw/s1600/BetaBlogChrome.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Here&#39;s the new and improved Butterflyzer:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgf4lrOw231eRT5zgyB316jESV_iAsxYCnhimPtt_-LFKECvzaM5Aung25FONgQVLOEPUi12L9Z94ODBKaggGpPEV00M729C-f_E000WdW26ssaFg09O1mYN6LcDfLlhJKiH-Nycz_lR0/s1600/BetaBlogNewApp2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgf4lrOw231eRT5zgyB316jESV_iAsxYCnhimPtt_-LFKECvzaM5Aung25FONgQVLOEPUi12L9Z94ODBKaggGpPEV00M729C-f_E000WdW26ssaFg09O1mYN6LcDfLlhJKiH-Nycz_lR0/s1600/BetaBlogNewApp2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h6&gt;Why so dark?&lt;/h6&gt;&lt;br /&gt;
By the way, if you&#39;ve wondered why Butterflyzer employs a &quot;light on dark&quot; visual style, it&#39;s not that we&#39;re trying to be trendy or anything. There are sound reasons for keeping the Butterflyzer elements dark:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Colors are easier to distinguish, connect and even read against a black background, and color plays a critical role in establishing implicit relationships within and between the various Butterflyzer user elements. Remember those old green and amber monitors? They really were easier on the eye.&lt;/li&gt;
&lt;li&gt;A dark background allows images to pop and reduces the sense of visual clutter, which is a critical issue given the complexity of the information visualized.&lt;/li&gt;
&lt;li&gt;Most web pages and other artifacts are black on white, of course -- keeping the Butterflyzer elements dark helps establish the web page elements as the visual foreground for the user. There is the &quot;content manager&quot; and then there is the &quot;content&quot; -- everything we can do to make that separation clear is helpful.&lt;/li&gt;
&lt;li&gt;Because we insert the semantic tags directly into the web pages, we need a way to distinguish them clearly from the rest of the web content, and we want those tags to look like the tags in the other views. OK, it&#39;s not always that attractive, but you can always turn the semantic feature off if you just want to look at the web page content.&lt;/li&gt;
&lt;li&gt;A dark background allows us to employ more obvious color highlights for buttons themselves. That&#39;s important because most of the buttons are monochrome and a simple as possible; we can then color them as appropriate for user interaction.&lt;/li&gt;
&lt;/ol&gt;Plus it looks cool, right?&lt;br /&gt;
&lt;br /&gt;
&lt;h5&gt;New Help System&lt;/h5&gt;&lt;br /&gt;
We&#39;ve implemented a new Help System that includes dynamic help, so that when you scroll over an interface item, you can get live help. Speaking of help, there is a lot of it! And since we have it now, I&#39;ll use it to help tell the story.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrntiN9LZAFE5qdFVL3eVAUMHG3IDHsKE58jvXIxJBm_mvzV2HF3-A-OYhfqlgACcn9M0Y4Pmxcmv2rLUwp68bkxerbtofnQ7lX6SV7w4iKqFYia6uA59p7VwsxME6OksndGhaP_GklXA/s1600/BetaBlogHelp.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;379&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrntiN9LZAFE5qdFVL3eVAUMHG3IDHsKE58jvXIxJBm_mvzV2HF3-A-OYhfqlgACcn9M0Y4Pmxcmv2rLUwp68bkxerbtofnQ7lX6SV7w4iKqFYia6uA59p7VwsxME6OksndGhaP_GklXA/s640/BetaBlogHelp.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Eclipse software developers might be interested to know that the majority of the documentation is actually produced directly from our properties files. (Yes, Butterflyzer is fully designed for Internationalization, but we don&#39;t have any translations for other languages yet.) That means that we only have to maintain this information in one place. Custom Java code reads the properties and converts them to Wiki text and the help system dynamically loads the property information for context sensitive help, including links to related documentation. From there, we use &lt;a href=&quot;http://wiki.eclipse.org/Mylyn/WikiText&quot;&gt;Mylyn Wiki Text&lt;/a&gt; to generate the Eclipse Help system artifacts, &lt;a href=&quot;http://butterflyzer.com/index.php/support/help&quot;&gt;online documentation&lt;/a&gt;, and even a &lt;a href=&quot;http://butterflyzer.com/docs/butterflyzer.pdf&quot;&gt;PDF manual&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h5&gt;Palette Menus&lt;/h5&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW1q42QhE_QalWItEgzsM5CNVTcEK5uKrI_t8qVQ9yvOtX6_hbXL5S3qRF9LwgRqyanHs87AS-hzLSogn-H7avAMeDoaqouBFfCMf1vkcpz8GQs8yZk0PLLzmJ9Nu1jw161ajg9qkDWkE/s1600/BetaBlogMenu.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW1q42QhE_QalWItEgzsM5CNVTcEK5uKrI_t8qVQ9yvOtX6_hbXL5S3qRF9LwgRqyanHs87AS-hzLSogn-H7avAMeDoaqouBFfCMf1vkcpz8GQs8yZk0PLLzmJ9Nu1jw161ajg9qkDWkE/s200/BetaBlogMenu.png&quot; width=&quot;140&quot; /&gt;&lt;/a&gt;&lt;/div&gt;One major goal was reducing the number of mouse-clicks needed to perform common tasks. I think that number and frequency of mouse-clicks have a large effect on end-user perception of ease of use and efficiency for an application. We needed to reduce the proliferation of toolbar buttons without causing a lot of mouse thrashing. Popup menus work fine for supporting changes in options, but they have a big usability issue. Every time you want to make a change, you have to reopen the menu. You could put options into a tool widget as many Apple applications do -- and we do that for more complex settings involving sliders -- but then users have to get rid of it when they&#39;re done. Instead, we created our own menu type that displays as long as the mouse is within the target menu area. This required replacing a lot of the normal Eclipse menu implementation.&lt;br /&gt;
&lt;br /&gt;
If you still think all of those buttons are a bit bewildering, you can find out what they all do &lt;a href=&quot;http://butterflyzer.com/docs/html/Toolbar_Items.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h5&gt;Context Popups&lt;/h5&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiPGBzTDoW1XX2UhMV1Pr93zWJUextS8SiHcfOtpyETEpZN_D6QUHle67a4iFUrBcp-eK2gmIVNyyOcAqTNiJVl1hGPT7cVBYz21B4TeYll4E5h3w6naHKUqcnqjmaQAZ8kCOV83y8kjI/s1600/BetaBlogPopup.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;144&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiPGBzTDoW1XX2UhMV1Pr93zWJUextS8SiHcfOtpyETEpZN_D6QUHle67a4iFUrBcp-eK2gmIVNyyOcAqTNiJVl1hGPT7cVBYz21B4TeYll4E5h3w6naHKUqcnqjmaQAZ8kCOV83y8kjI/s200/BetaBlogPopup.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;If a mouse-click takes time and mental effort, a right-click takes even more. There is just something that feels slow and uncomfortable about the whole interaction. I think that&#39;s a major issue with the Eclipse user experience actually, and one of the reasons that people like Web interfaces so much -- you see something, you click on it, it does something. Simple. At the same time, it&#39;s even worse to have to mouse up to a toolbar to perform a common task on an item. And the worst thing of all is a hover. There is nothing like waiting for a machine that can do billions of instructions per second to take half a second to decide that you want to do something!&lt;br /&gt;
&lt;br /&gt;
In Butterflyzer, we wanted to support a sense of flow when working with items. And we need commonality between the different kinds of views so that for example the options that you have when working with an item in the graph view are the same as when you mouse over the item in the browser. The solution was a context menu that appears automatically . It&#39;s still a bit experimental -- there are some usability and consistency aspects to fine-tune -- but I think it works pretty well. Currently you hold down that &quot;CTRL&quot; key in order to make the menu appear on any item -- having it appear in all cases made interaction a bit busy feeling.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Windows&lt;/h4&gt;&lt;br /&gt;
Yes, Butterflyzer has always done Windows. Just not very well, frankly. Apologies to the legions (well, dozens anyway!) of Windows downloaders out there..we think this latest version will make you much happier.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpKRNSoBw8abVcdDzKehupIDRDcsLVEWxONmijjrbvYl1lx44JQ0w84pVQH69sAH_TdWRQ7aiCuFGhrjOqCz2RPSkVN771_lpyr2HAeZoitpLjmnCE2e2-X9Kbgg17F44oHHZJZuztdVc/s1600/BetaBlogWindows.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;432&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpKRNSoBw8abVcdDzKehupIDRDcsLVEWxONmijjrbvYl1lx44JQ0w84pVQH69sAH_TdWRQ7aiCuFGhrjOqCz2RPSkVN771_lpyr2HAeZoitpLjmnCE2e2-X9Kbgg17F44oHHZJZuztdVc/s640/BetaBlogWindows.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h4&gt;Visualization&lt;/h4&gt;&lt;br /&gt;
There have been significant strides in this critical area as well, including innovative approaches to taming, filtering, and cleaning up visualizations and related data. For more on all of that, check out &lt;a href=&quot;http://butterflyzer.com/docs/html/Visualizing_the_Web.html&quot;&gt;this section&lt;/a&gt; in our comprehensive documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Internals&lt;/h4&gt;&lt;br /&gt;
The list of enhancements here is too long to get into, but we&#39;ve put a lot of effort into creating a system that has the highest throughput and integration without compromising data integrity. It&#39;s been a challenge, and there have to be some gotchas lurking out there, but I&#39;m really happy with how the system is handling the large volume of data that we can pull in. To see what I mean by &quot;large volume of data&quot;, check out &lt;a href=&quot;http://butterflyzer.com/docs/html/Browsing_and_Searching.html#Searching_the_Web&quot;&gt;this page&lt;/a&gt; for details on what you get from a single Butterflyzer search.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Web Site&lt;/h4&gt;&lt;br /&gt;
The web site has come a long way from the alpha days, where it was deliberately minimal and home grown. Please &lt;a href=&quot;http://butterflyzer.com/&quot;&gt;visit&lt;/a&gt;!&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;New Videos&lt;/h4&gt;&lt;br /&gt;
If you want to see how this all fits together, check out the new videos:&lt;br /&gt;
&lt;br /&gt;
&lt;object height=&quot;540&quot; width=&quot;960&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/fpL0IXtXMP0?version=3&amp;amp;hl=en_US&amp;amp;hd=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/fpL0IXtXMP0?version=3&amp;amp;hl=en_US&amp;amp;hd=1&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;960&quot; height=&quot;540&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;object height=&quot;540&quot; width=&quot;960&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/RGlhS6avi8I?version=3&amp;amp;hl=en_US&amp;amp;hd=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/RGlhS6avi8I?version=3&amp;amp;hl=en_US&amp;amp;hd=1&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;960&quot; height=&quot;540&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Let&#39;s Talk!&lt;/h4&gt;&lt;br /&gt;
As always, I&#39;d love to hear from you. What are you using Butterflyzer for? What would you like to do with Butterflyzer?&lt;br /&gt;
&lt;br /&gt;
One thing I&#39;d like to mention specifically for people already involved in developing software tools for the Semantic Web: Butterflyzer is an end-user product, but there are many other opportunities for employing core Butterflyzer technology. Perhap you have proprietary or specialized Web information sources that you&#39;d like to integrate with the Butterflyzer Content Management and Visualization services. Perhaps you&#39;d like to license or re-brand Butterflyzer or make use of key components. &lt;a href=&quot;http://butterflyzer.com/index.php/support/contact&quot;&gt;Contact us&lt;/a&gt; and let&#39;s discus how you can use Butterflyzer to enhance your efforts.&lt;br /&gt;
&lt;br /&gt;
But what I really hope is that you&#39;re someone who just wants a good tool that you can use for web research, and that Butterflyzer scratches that itch for you. I&#39;m reading the new biography of Steve Jobs so I can&#39;t help indulging in a little reality distortion of my own -- in the best sense of that phrase, naturally. You&#39;d never know it with all of the talk, but we&#39;re still in very early days of semantic technologies, and we&#39;re nowhere near exploring the possibility surface, let alone exploiting it. When it comes to web exploration tools, what exists now for the average user is... well, it&#39;s a lot of dumb shit, with a nod to Steve. I believe that you need a rich, powerful application to make the most of the deep store of knowledge that is out there, but it needs to be as simple as it possibly can be -- in short, a tool that opens up the &lt;b&gt;Semantic Web for the Rest of Us&lt;/b&gt;. And that&#39;s what Butterflyzer is all about.&lt;br /&gt;
&lt;br /&gt;
It&#39;s an exciting time to be building software tools! There are a lot of interesting things happening, and plenty of opportunities for all of us to make positive changes in how people around the world work and live. I&#39;ve got some other really exciting news to share, but that will wait until next week...</description><link>http://milesparker.blogspot.com/2012/01/butterflyzer-beta.html</link><author>noreply@blogger.com (Miles Parker)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgymma0XIaYekjKAtzbNcAL1tetGe4WbWwNqxi92DVKAj9JE8o3u1bZZSEcb5ely1xANIzVVKJAUU2Z-IKwFNf8O1ls-MxDm0U56MgghIIP-OMCwn0ETHFK6rR8KLNdFAsLpUYYVdHlCvM/s72-c/BetaBlogOldApp.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-8650831820991903252</guid><pubDate>Fri, 23 Dec 2011 02:54:00 +0000</pubDate><atom:updated>2011-12-22T22:07:01.055-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business</category><category domain="http://www.blogger.com/atom/ns#">butterflyzer</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">graphics</category><category domain="http://www.blogger.com/atom/ns#">ip</category><category domain="http://www.blogger.com/atom/ns#">politics</category><category domain="http://www.blogger.com/atom/ns#">science</category><category domain="http://www.blogger.com/atom/ns#">visualization</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Forecast: Spring Clouds and SOPA.</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;I&#39;ve been thinking a lot about how to marry the visual appeal and density of representation you get with Word Clouds such as the &lt;a href=&quot;http://www.wordle.net/&quot;&gt;Wordle&lt;/a&gt; and &lt;a href=&quot;http://wiki.eclipse.org/Zest/Cloudio&quot;&gt;Eclipse Zest Cloudio&lt;/a&gt;&amp;nbsp;with the relational information conveyed by graphs. I discussed this a bit in a&amp;nbsp;&lt;a href=&quot;http://milesparker.blogspot.com/2011/10/arab-spring-cloudio-and-butterflyzer.html&quot;&gt;Recent Post&lt;/a&gt;&amp;nbsp;showing Clouds created using Butterflyzer depicting thousands of Tweets from the Arab Spring.&lt;br /&gt;
&lt;br /&gt;
I thought that effort was pretty cool, but the limitations were really obvious.&amp;nbsp;Not coincidentally -- clouds are in the air after all -- Jacob Harris, the guy responsible for many of the New York Time&#39;s brilliant infographics (hate the word, but it is descriptive) posted a scathing but quite legitimate &lt;a href=&quot;http://www.niemanlab.org/2011/10/word-clouds-considered-harmful/&quot;&gt;critique of word clouds&lt;/a&gt;, ending with the line &quot;Every time I see a word cloud presented as insight, I die a little inside.&quot; I like this guy&#39;s style! Though I think Jacob doth over-harsh a bit. Word clouds have their place. My take is that they are great for depicting the madness of crowds but lousy at deciphering it. As I said in my original post:&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;&quot;One of the downsides of this approach is that unlike in our graph visualizations, you lose concept proximity. So for example, looking at the cloud you can instantly see that Tunisia and Lebanon are frequently mentioned, but what you can&#39;t see is how frequently they are used together. That&#39;s what our graph visualization tools do now, and I think there are some neat possibilities for marrying the two approaches.&quot;&lt;/i&gt;&lt;/blockquote&gt;After I posted this, a couple of my Eclipse compatriots -- Ed MacKerrow and Fabian Steeg -- shared that they&#39;d been thinking along similar lines. I&#39;ve been playing with this over the last few weeks (probably too much, given that no one has given any indication that it&#39;s a feature they&#39;re willing to pay for) and I&#39;ve come up with an initial implementation in Butterflyzer. As always, there are trade-offs and no visualization is perfect, but I&#39;m pretty happy with the results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;A SOPA Opera&amp;nbsp;&lt;/h3&gt;&lt;br /&gt;
Let&#39;s use the latest&amp;nbsp;attempt&amp;nbsp;(editorial alert) by the greedy and small-minded&amp;nbsp;to destroy the Internet as our subject. A search on Tweets containing &quot;SOPA&quot; returns a sample of 10,000 or so tweets from the last week. This is what a Butterflyzer produced &quot;Spring Cloud&quot; looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkC3-UNfyZ2zuHynMLp138frv1adn6g53yf_5gC4-3_6PXJ3zIoBCkDOzrfxsdQ9rbRoclOWOLospWaEpBH0bAxJdKsbc__oAhrXByvaFxbnEOtQCsxcpr1Ld8Oelp3JyINg2noomllHo/s1600/BlogSOPAText.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkC3-UNfyZ2zuHynMLp138frv1adn6g53yf_5gC4-3_6PXJ3zIoBCkDOzrfxsdQ9rbRoclOWOLospWaEpBH0bAxJdKsbc__oAhrXByvaFxbnEOtQCsxcpr1Ld8Oelp3JyINg2noomllHo/s1600/BlogSOPAText.png&quot; width=&quot;75%&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: -webkit-auto;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;You might notice something right away. See the group of Spanish words to the bottom left? They probably don&#39;t have anything to do with the kind of SOPA we&#39;re interested in. (Though reading the related Tweets made me hungry.) In a Word Cloud we&#39;d never be able to separate them out of the rest of the clutter, but using the Spring Clouds and Butterflyzer we can eliminate those irrelevant nodes -- along with all of their tweets -- with a few mouse clicks. Hey, we could call that &quot;Cluster Analysis for the Rest of Us&quot;™. (Lame Apple reference numero uno.) Now we can see just the stuff we care about:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD2RzJHdzGf3LhwMQTXNwoQWvVL7KWZfS9gp4QNmVYPcCzazYfM641TZq_YtyqWKCEgWejys1hBqfBU-o730I7j-UE5wutl0YvI6Y4-ghYJw0UEsQbAi1d-1ZXSUa7zNJBxNR-9M-nCDc/s1600/BlogNoSpanish.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD2RzJHdzGf3LhwMQTXNwoQWvVL7KWZfS9gp4QNmVYPcCzazYfM641TZq_YtyqWKCEgWejys1hBqfBU-o730I7j-UE5wutl0YvI6Y4-ghYJw0UEsQbAi1d-1ZXSUa7zNJBxNR-9M-nCDc/s1600/BlogNoSpanish.png&quot; width=&quot;75%&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Right away we can see how things are associated with each other. Sometimes the associations are obvious; for example when we see &quot;vote&quot; and &quot;house&quot; (bottom middle, in white) together. That&#39;s useful, and sometimes you can even pick the content up just by looking at the tags, as in &quot;unconstitutional&quot;, &quot;stanford&quot; and &quot;review&quot;. But many of the relationships are much more interesting. For example, notice that NDAA comes up quite a bit. When it does come up, it seems to be associated with &quot;@barrackobama, &quot;obama&quot; and also interestingly &quot;#OWS&quot;. That gives real insight into the &lt;i&gt;meaning&lt;/i&gt;&amp;nbsp;and &lt;i&gt;relevance&lt;/i&gt; of the tweet terms, not simply their&amp;nbsp;&lt;i&gt;existence&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
We can infer more subtle information than that from the diagram; for example, that the relationship between Obama, NDAA and SOPA in the twitter discourse is organic -- that is, probably not reflecting an orchestrated Tweet campaign, a few viral Tweets or say, Fox News. (If you&#39;re looking for those guys, you&#39;ll like the video below.) Instead, the use of multiple terms for Obama might indicate that people are associating the president and these two legislative (editorial alert) attacks on the Bill of Rights without any help from say, the mainstream media. And in fact, if we look at the individual tweets, that&#39;s exactly what we do see. In the following list we&#39;ve eliminated the RTs, but the RT ratio to original content is also quite light. If we Focus on those Terms, this is what we see:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: -webkit-auto;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: -webkit-auto;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9aeQPF-fQKWX1DDbckj4DB4EML_nCadfRKPcQIHa_9QlLbbnB5xy-erWyxvReFWLEgCfVu5PKPwWBeZAchIA-75ZKqzj3aTtPzA4wE9ENOJwH7BLGwDfPBzxKux0PWnMw00leB1H3u9I/s1600/BlogSOPAObama.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9aeQPF-fQKWX1DDbckj4DB4EML_nCadfRKPcQIHa_9QlLbbnB5xy-erWyxvReFWLEgCfVu5PKPwWBeZAchIA-75ZKqzj3aTtPzA4wE9ENOJwH7BLGwDfPBzxKux0PWnMw00leB1H3u9I/s1600/BlogSOPAObama.png&quot; width=&quot;75%&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: -webkit-auto;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: -webkit-auto;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;Now, if you&#39;re someone from the White House or DNC evaluating the potential impact of SOPA on a particular community, it could be useful to be able to get to that kind of information quickly. That&#39;s the kind of thing that Butterflyzer was built to do.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;The Details&lt;/h3&gt;&lt;br /&gt;
So, how are we creating these Spring Clouds? No secrets or bogus patent claims here.&amp;nbsp;(Perhaps you or someone you know has discovered this solution already; if so let me know and I&#39;d love to add a reference to your work here.) I&#39;ll outline the basic approach below...it&#39;s really pretty simple.&amp;nbsp;If you&#39;re a visualization geek, try to figure about how this was done&amp;nbsp;&lt;i&gt;before&lt;/i&gt;&amp;nbsp;reading further. (The name is already a pretty big hint.) If you&#39;re not a visualization geek, then good news -- you don&#39;t have to figure out any of this. Butterflyzer handles all of the details, and you can set it all up with a few mouse clicks to customize the graph view. See the section below for how.&lt;br /&gt;
&lt;br /&gt;
Preparing the data:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;All of the Tweets are collected using Butterflyzer&#39;s automated search tools.&lt;/li&gt;
&lt;li&gt;Butterflyzer identifies all Terms (words) that appear in any Tweet and indexes the Tweets against those.&lt;/li&gt;
&lt;li&gt;We then drop: some common english terms; terms with occurances below some threshold (say 250); and the original search words and any other really common connections.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;The visualization algorithm:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Create nodes representing a) Terms and b) Tweet Groups. Tweets are grouped together whenever they have exactly the same set of edges. Edges connect the terms to any Tweets containing those terms.&amp;nbsp;&amp;nbsp;Butterflyzer does all of this automatically based on your specifications.&lt;/li&gt;
&lt;li&gt;Layout the Graph using a &lt;a href=&quot;http://en.wikipedia.org/wiki/Force-based_algorithms_(graph_drawing)&quot;&gt;Spring Layout Algorithm&lt;/a&gt;. We use the Eclipse Zest project&#39;s Spring Layout Algorithm written by Ian Bull and Casey Best, heavily hacked to provide thing like continuous updating.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The Trick&lt;/b&gt;: We then hide the Tweet Groups and their connecting edges.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;So, below we can see the graph as it &quot;looks&quot; to the layout algorithm.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0jij5LqsYdjQ8vdoQ49tdnFXXHfeIhBNYm-T8x_nstv6vhGlYI8MCIe8pNwN50gKoJIEGz-ac5eVxMav5QMERITw6mVXnYGpf3kjV-tf4oXOh0HhjGosAzUHQ27tXXqtUyQwBha2GjuA/s1600/BlogSOPABoth.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0jij5LqsYdjQ8vdoQ49tdnFXXHfeIhBNYm-T8x_nstv6vhGlYI8MCIe8pNwN50gKoJIEGz-ac5eVxMav5QMERITw6mVXnYGpf3kjV-tf4oXOh0HhjGosAzUHQ27tXXqtUyQwBha2GjuA/s1600/BlogSOPABoth.png&quot; width=&quot;75%&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
And again, here&#39;s the same thing with just the Terms:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkC3-UNfyZ2zuHynMLp138frv1adn6g53yf_5gC4-3_6PXJ3zIoBCkDOzrfxsdQ9rbRoclOWOLospWaEpBH0bAxJdKsbc__oAhrXByvaFxbnEOtQCsxcpr1Ld8Oelp3JyINg2noomllHo/s1600/BlogSOPAText.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkC3-UNfyZ2zuHynMLp138frv1adn6g53yf_5gC4-3_6PXJ3zIoBCkDOzrfxsdQ9rbRoclOWOLospWaEpBH0bAxJdKsbc__oAhrXByvaFxbnEOtQCsxcpr1Ld8Oelp3JyINg2noomllHo/s1600/BlogSOPAText.png&quot; style=&quot;cursor: move;&quot; width=&quot;75%&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Now, let&#39;s remove the Terms and edges instead of the Tweets:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsGR6qDIjPb4yqma_b0wLDp1m5U0ozTR1xJZObEQbbLCjzvCUaraXn2aono9SZKCMGk3iMiK4ttUagzCXAN1OzoL3P6lwNptfUzXQCHZV-f6b5g2ZBFsUcXgi58ocpoPNwIxeZnw5Ou-I/s1600/BlogSOPATweets.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsGR6qDIjPb4yqma_b0wLDp1m5U0ozTR1xJZObEQbbLCjzvCUaraXn2aono9SZKCMGk3iMiK4ttUagzCXAN1OzoL3P6lwNptfUzXQCHZV-f6b5g2ZBFsUcXgi58ocpoPNwIxeZnw5Ou-I/s1600/BlogSOPATweets.png&quot; width=&quot;75%&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Each circle represents a group of tweets, and the area of the circle is proportional to the number of Tweets in the group, just as you&#39;d expect. As you can see, we&#39;re using a lot of data and a lot of computation for what looks like a pretty simple word cloud.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Curious about what those Tweets actually say? Again, that&#39;s easy to find out. Just mouse over one of the nodes (not here, silly -- you&#39;ll have to download &lt;a href=&quot;http://butterflyzer.com/index.php/download&quot; target=&quot;_blank&quot;&gt;Download Butterflyzer&lt;/a&gt;&amp;nbsp;first, see below) and you can read them, in all their Twittish glory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR9AQUPn-1xWyf6di1JFdca-iaEw5UVG0vSllJYpPk2EoD6TRey90EZkYlHk6QpbUqaWTO9YRg8znMnD8Vmrgspqq2zTAtm2cspfmK1YBQWgtKTpxHpFdwjlnjpn2VyQv7EhX4CE4WH5U/s1600/BlogSOPACaption.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR9AQUPn-1xWyf6di1JFdca-iaEw5UVG0vSllJYpPk2EoD6TRey90EZkYlHk6QpbUqaWTO9YRg8znMnD8Vmrgspqq2zTAtm2cspfmK1YBQWgtKTpxHpFdwjlnjpn2VyQv7EhX4CE4WH5U/s1600/BlogSOPACaption.png&quot; width=&quot;50%&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
So again, this thing might actually be useful, right? Suppose you&#39;re a Legislative Assistant for one of the senators who will be deciding whether to vote this (editorial alert) heinous bill out of committee. You might want to dig into what folks that are interested in a particular aspect of the legislation -- such as copyright -- are actually talking about (and perhaps whether your boss or any of his or her campaign donors come up in any of them). You can quickly scan through the cloud and associated terms, and even identify interest clusters.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;h3&gt;Limitations&lt;/h3&gt;&lt;br /&gt;
As I said above, all visualizations have limitations. They&#39;re on a tradeoff landscape like everything else. Here, the tradeoff vs. Clouds is information density. Because a Cloud diagram doesn&#39;t care where words go it can pack things wherever they fit best. We can improve the Spring Cloud layout from where it is now, but there is is a natural limit. Also, the Spring Layout algorithm we&#39;re using isn&#39;t very good at handling cases of overlapping nodes. Sometimes that&#39;s cool, but sometimes it&#39;s just messy. Especially since SWT doesn&#39;t support alpha for text (but does a great job for shapes as you can see above) the text can be difficult to read and look crowded.&lt;br /&gt;
&lt;br /&gt;
Another issue is that the underlying spring algorithm is in O(n^2). That&#39;s geek speak for scary &lt;i&gt;and&lt;/i&gt; ugly. As the number of nodes increases -- and as you can see from the examples above, it definitely will increase -- the cost of building a graph increases with the square of the increase in size. There are techniques to mitigate that, but computational costs are a limiting factor, especially for a tool like Butterflyzer that needs to do things like respond to user input in a timely way. We&#39;ve spent a lot of time trying to tune the UI to be responsive while still putting enough cycles toward the layout, but there is definite room for improvement there.&lt;br /&gt;
&lt;br /&gt;
Finally, compared to Word Clouds, Spring Clouds just aren&#39;t that sexy looking. Because we can&#39;t just put words wherever we want, things are unbalanced and lack symmetry. We can improve that, but again, only within limits. If truth and beauty have a love-hate relationship, sometimes you&#39;re just going to have to pick sides.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;h3&gt;Try It!&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;Want to try it for yourself? Here&#39;s what you need to do:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Download and install the&amp;nbsp;&lt;a href=&quot;http://butterflyzer.com/index.php/download&quot; target=&quot;_blank&quot;&gt;Butterflyzer Beta&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;To do it yourself:&lt;/li&gt;
&lt;ol&gt;&lt;li&gt;Do a search on SOPA (or whatever you like) by typing it into the search field.&lt;/li&gt;
&lt;li&gt;Click the &quot;Tweet Terms&quot; node under &quot;Collections&quot;.&lt;/li&gt;
&lt;li&gt;You might want to do some clean up as described above and set up your views to show only the graphs and outline. See the extensive Butterflyzer docs for more on that.&lt;/li&gt;
&lt;li&gt;From the Filter Menu, select &quot;Cliques&quot;.&lt;/li&gt;
&lt;li&gt;From the &quot;Draw Options&quot; menu, Unselect (by clicking) &quot;Show Items&quot;, &quot;Show Items Text&quot;, &quot;Show Icon&quot;, &quot;Scale Count&quot; and &quot;Scale Topsy&quot;. Select &quot;Scale Related&quot;.&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;Or just download&amp;nbsp;&lt;a href=&quot;http://butterflyzer.com/docs/examples/SOPA.bflybin&quot;&gt;SOPA Example&lt;/a&gt;&amp;nbsp;and open it from within Butterflyzer.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;Have fun, and I look forward to seeing your own creations!&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Sex, Lies and Spring Cloud Video&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Oh, and one more thing... (Lame Apple reference number two, if you&#39;re counting.) A nice aspect of the Spring Layout in general and the Spring Cloud is that it is a continuous algorithm, which means that the visualization improves over time, but that also you can add and remove information from the graph without forcing a new layout. This means that we can actually animate the Spring Cloud over time, as I&#39;ve done in the movie below. Here we&#39;re looking at the evolution of Tweets about the Republican Primaries over a span of a week.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;960&#39; height=&#39;540&#39; src=&#39;https://www.youtube.com/embed/rR6gad5V0sw?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There aren&#39;t docs on how to do this part yet, but if you want to experiment with this new feature, just select &quot;Select Time Span&quot; from the &quot;Filter&quot; Toolbar Menu or the &quot;View&quot; Menu.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;</description><link>http://milesparker.blogspot.com/2011/12/forecast-spring-clouds-and-sopa.html</link><author>noreply@blogger.com (Miles Parker)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkC3-UNfyZ2zuHynMLp138frv1adn6g53yf_5gC4-3_6PXJ3zIoBCkDOzrfxsdQ9rbRoclOWOLospWaEpBH0bAxJdKsbc__oAhrXByvaFxbnEOtQCsxcpr1Ld8Oelp3JyINg2noomllHo/s72-c/BlogSOPAText.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-6737129528506718989</guid><pubDate>Thu, 24 Nov 2011 03:27:00 +0000</pubDate><atom:updated>2011-11-23T21:31:14.176-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business</category><category domain="http://www.blogger.com/atom/ns#">butterflyzer</category><category domain="http://www.blogger.com/atom/ns#">dharma</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><title>Crossing the ...er... Chasm</title><description>Yesterday I went off on a rant about &lt;a href=&quot;http://www.amazon.com/gp/product/0060517123/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=milepark-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=0060517123&quot;&gt;Crossing the Chasm&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=milepark-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0060517123&amp;amp;camp=217145&amp;amp;creative=399369&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;. Within the technology world, that&#39;s sort of like mentioning that you don&#39;t care for the Bible all that much at a Rick Perry fundraiser. (The book blurb &lt;i&gt;does&lt;/i&gt; call it &quot;The bible for entrepreneurial marketing&quot;.) Oh yeah, and there&#39;s the fact that everyone I&#39;ve ever asked for advice about making Butterflyzer fly has recommended the book or echoed everything in it. And I&#39;m talking about people that know, that have, like, actually built a company based on its principles.&lt;br /&gt;
&lt;br /&gt;
And so let&#39;s be clear right up front that just about every suggestion in the book makes complete and total sense -- not to mention that I must say that this is the only business book I&#39;ve read -- apart from &lt;a href=&quot;http://www.amazon.com/gp/product/027373279X/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=milepark-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399369&amp;amp;creativeASIN=027373279X&quot;&gt;The New Business Road Test&lt;/a&gt; -- that seems to have been written for people who actually &lt;i&gt;like&lt;/i&gt; to read and to think. After reading the book I at least now know all of the things that I&#39;m doing wrong. For example, I don&#39;t know anything about a) marketing or b) management, but I do know about c) software development. Somehow I figure if I keep doing c), a) and b) will take care of themselves. That&#39;s wrong, apparently. I could respond to such reasonable but difficult to implement advice in one of two ways: I could take the advice, or attack the messenger. Guess which option I chose?&lt;br /&gt;
&lt;br /&gt;
Now, the problem with ranting on Twitter is that someone might actually read those rants. Including the rant-ee. Who, in response to my sharing with the world that his book &quot;bugged the shit out of me&quot; and was &quot;one of the more depressing books I&#39;ve read&quot;, very graciously suggested:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://twitter.com/#!/geoffreyamoore/status/139459962551287808&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Er.. So here they are, my rants, and Geoffrey Moore&#39;s all-too reasoned replies. Following that some additional observations, certified rant-free.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://twitter.com/#!/milesparker/status/139036720233582592&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;Geoffrey Moore: &quot;This article is at the heart of Escape Velocity--Free Your Compamny&#39;s Future from the Pull of the Past. That said, I think Steve Jobs is not a replicable phenomenon, so we have to get this done with a &quot;mere mortals&quot; team.&quot;&lt;br /&gt;
&lt;/blockquote&gt;&lt;a href=&quot;http://twitter.com/#!/milesparker/status/139037948883640322&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;Geoffrey Moore: &quot;I agree. What I suspect we disagree on is what constitutes value-creating innovation because over time it does become harder and harder for established enterprises to succeed with disruptive innovations. In that sense, serial entrepreneurs--the great disrupters--do need to move aside, ideally to go off and do it again via a next-generation start-up.&quot;&lt;/blockquote&gt;&lt;a href=&quot;http://twitter.com/#!/milesparker/status/139038532567171072&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;Geoffrey Moore: &quot;-- Twitter is so the wrong medium for us to have this really interesting discussion--the linearity of any one chasm-crossing does not preclude others, but to be fair to your point, it gets harder and harder for bigger and bigger companies to cross chasms. Bezos is indeed like Jobs in his willingness to make &quot;chasmatic&quot; bets at scale, so when we play choose-up for management teams, you get to start with two all stars!&quot;&lt;/blockquote&gt;&lt;a href=&quot;http://twitter.com/#!/milesparker/status/139039559316029440&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;Geoffrey Moore: &quot;My final &quot;ouch!&quot; I am torn between suggesting you read Escape Velocity, or just writing me off entirely.&quot;&lt;/blockquote&gt;&lt;br /&gt;
First off, I haven&#39;t read &lt;a href=&quot;http://www.amazon.com/gp/product/0062040898/ref=as_li_tf_tl?ie=UTF8&amp;tag=milepark-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399373&amp;creativeASIN=0062040898&quot;&gt;Escape Velocity&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.com/e/ir?t=milepark-20&amp;l=as2&amp;o=1&amp;a=0062040898&amp;camp=217145&amp;creative=399373&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt; so my responses will be the poorer for that.&lt;br /&gt;
&lt;br /&gt;
I think my critique comes down to two real objections. First, there is linearity and narrowing of markets. The book seems to argue for a very hyper-focussed approach, and given the tiny resources a new company has, that makes a tremendous amount of sense. It&#39;s close to indisputable. On the other hand, if a technology is really disruptive, it&#39;s going to be difficult to tell &lt;i&gt;a priori&lt;/i&gt; just what it disrupts best. Especially if that disruption involves network effects. That&#39;s sort of the tongue-in-cheek argument I was making in this &lt;a href=&quot;http://milesparker.blogspot.com/2011/05/meet-butterflyzer-part-ii-what-does-it.html?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+MetaBeta+%28meta+beta%29&quot;&gt;post&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I tend to analyze things from the perspective of complex adaptive systems. The problem that jumps out at me when looking at the above approach is that in the ecology of capital, those ideas that are &lt;i&gt;least&lt;/i&gt; general and more simplistic will be favored, simply because -- all other things being equal -- those will be the easiest to identify an initial market for. As someone struggling somewhat precariously at the pioneer stage, this is a real problem for me. If everyone demands that one have a market clearly identified, how do I get the resources to identify that market, especially given that the market identification process involves creating enough of the technology to actually see the disruptive effect?&lt;br /&gt;
&lt;br /&gt;
Along with this there we have the observer effect. We have certainly seen that the companies that succeed in the venture capital arena closely follow the strategies spelled out in Crossing the Chasm. But do the companies succeed because they have the best strategy &lt;i&gt;ex-ante&lt;/i&gt; or because they are most co-adapted with the culture of venture capital, which is heavily invested in the Chasm model? (And I fundamentally don&#39;t buy the naive classical view that some capital sources will evolve to fill the open niche.)&lt;br /&gt;
&lt;br /&gt;
To whatever extent the above arguments hold, we&#39;re missing out on a lot of possibilities. To that extent, any really transformative technological innovation would then come from large companies willing to take risks on complex and general technologies. And when you look at it, that&#39;s exactly what Apple and Amazon are doing. They&#39;re hiring and finding ways to value the actual innovators that might have been working in a garage somewhere twenty years ago. (Do we even have any good examples of the garage model in the last few years? I can&#39;t think of any, but that doesn&#39;t mean they don&#39;t exist.)&lt;br /&gt;
&lt;br /&gt;
Now, to the extent those arguments &lt;i&gt;don&#39;t&lt;/i&gt; hold, you&#39;d want to do everything that the rest of the book suggests. And I&#39;d stipulate that in the very large majority of cases, that would in fact be the right thing to do. But we shouldn&#39;t forget that innovation is the canonical fat-tailed phenomenon. What that implies is that the potential benefit from the minority of cases where real innovation doesn&#39;t fit into the Chasm model box could very greatly outweigh the benefit from those that do.&lt;br /&gt;
&lt;br /&gt;
But the fact is that -- back in the real world -- we should assume that they even if they &lt;i&gt;don&#39;t&lt;/i&gt; hold the observer argument means that any potential innovative company must behave &lt;i&gt;as if&lt;/i&gt; they do. And yes, that&#39;s the part that bugs me, because it does seem to have depressing consequences. Because it means that you don&#39;t get to have a company that is truly driven by a core belief in innovative product and innovative people unless you already &lt;i&gt;are&lt;/i&gt; Jobs or Bezos. And you don&#39;t get to work in one unless it&#39;s Apple or Amazon. (I realize I&#39;m making an extreme case here.)&lt;br /&gt;
&lt;br /&gt;
I think that explains why those companies are able to attract people who actually have something unique to contribute. The obvious question to ask is &quot;why aren&#39;t there more companies like that&quot;? And especially, &quot;why aren&#39;t there any [ok, very many] non-gigantoid companies like that&quot;? No, I don&#39;t think it is simply because of the unique, raw talent of these two CEOs and that no-one else has the vision, passion  or creativity to do the same thing. I think it&#39;s actually because no-one else has had the balls and the money to do it. Don&#39;t forget, Steve had to spend a decade in exile because venture capital thought that selling sugar-water was the best model for a &#39;mature&#39; technology company. The real question is &quot;what is it about the current setup that prevents other companies from doing it?&quot; &quot;What did Jobs and Bezos overcome that others haven&#39;t been able to?&quot; In my book, a large part of the answer is that what is in the way is actually &quot;a culture that commodifies ideas, driven by people looking for the simplest, most repeatable and predictable business model possible&quot;.&lt;br /&gt;
&lt;br /&gt;
Here my concern is actually not so much with the serial entrepreneurs -- as suggested, they can more or less fend for themselves. Now, some of those people will also be the true innovators, but my sense is that (especially in the web space) more and more of those people are actually closer to professional managers and tech-savvy investors than passionate innovators. My concern is for the people actually &lt;i&gt;doing&lt;/i&gt; the innovation. And it turns out that, perversely, they are on the losing end of the stick any way you look at it. And so this was the part that I found so depressing. Not because it isn&#39;t correct, but because it probably is:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&quot;In the development organization, pioneers are the ones who push the edge of the technology application envelope... Their brilliance fuels the early market, and without them, there would be no such thing as high tech.&lt;/BR&gt;Nonetheless, once you have crossed the chasm, these people can become a potential liability.. In the meantime, they are not likely to cooperate in the compromises needed, and can be highly disruptive to groups seeking to carry this agenda out. It is critical, therefore, that as the enterprise shifts ... that pioneer technologists be transferred elsewhere..if necessary to another company.&quot; [I think the word we&#39;re struggling for here is &quot;fired&quot;.]&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote&gt;&quot;The final world on pioneer technologists, I suppose, is that they are in the same bind as authors -- a fate I can identify with. Like authors, they are compelled to conduct their craft regardless of whether anyone will pay for it. As such their negotiating position is fundamentally weak, and their normal compensation reflects it.&quot;&lt;/blockquote&gt;&lt;br /&gt;
Let&#39;s be clear: these are the very people without whom none of the innovation that drives any company growth can or would have occurred in the first place. Geoffrey acknowledges that &quot;casting aside people, dislocating their lives and threatening their livelihood, is immoral&quot;, but I can&#39;t help but read that as an awkward admission of an inevitable consequence. And I wonder how many technologists know that this is very literally the playbook that their company management and funders are using, and what they would do if they did? I know that I would neither want to join a company or to hire people for a company that thought this way. In fact, my experience is that many companies -- certainly the ones that I admire -- don&#39;t really think this way: most people simply aren&#39;t that venal. Rather, it seems more of a kind of macho posturing for the benefit of the funding community. Still, isn&#39;t that kind of sad?&lt;br /&gt;
&lt;br /&gt;
So at core, I am not making an economic or business argument, but an ethical, even spiritual, one. I&#39;d like to see people living happier, more fulfilled lives. I guess I should be embarrassed to admit that, but there it is. Unfortunately, we live in a world where business concerns are orthogonal and often actually opposed to human concerns.&lt;br /&gt;
&lt;br /&gt;
Happiness requires a sense of community, of shared responsibility, common interest and diversity of ideas and styles. Healthy dynamic systems need that kind of diversity, that soft-permeability, and they need it in day to day interactions, not just through the periodic purging process demanded by investors as a result of moving to another stage in the Chasm life-cycle. If you look at any social system -- with the notable exception of those constructed via the crushing, simple-minded logic of modern capitalism -- that&#39;s exactly what you see. Why can&#39;t we build companies of all sizes where people from all ends of this spectrum co-exist? Wouldn&#39;t that be a worthy goal, or do we as always fall back on the argument that business is about what is, not what we would like it to be?</description><link>http://milesparker.blogspot.com/2011/11/crossing-er-chasm.html</link><author>noreply@blogger.com (Miles Parker)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-8055514411440069420</guid><pubDate>Wed, 05 Oct 2011 00:33:00 +0000</pubDate><atom:updated>2011-10-04T17:35:11.031-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">butterflyzer</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">science</category><category domain="http://www.blogger.com/atom/ns#">visualization</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>The Arab Spring, Zest Cloudio and Butterflyzer</title><description>One of the goals that I&#39;m really trying to drive Butterflyzer toward is finding a middle ground between the level of detail that hard-core social network analysts get into, and the incredibly over-simplified executive dashboard approach that so many of the social media analysis startups are providing. A big part of this is providing fluid, interactive visualization. So far a lot of that has been based on graph visualization, but we&#39;re also experimenting with integrating other approaches.&lt;br /&gt;
&lt;br /&gt;
One of the cool things that we&#39;ve got lying around to play with are a bunch of tweets collected during the start of the Arab Spring. We&#39;ve used a lot of different techniques for visualizing and analyzing this data, but when the Eclipse &lt;a href=&quot;http://wiki.eclipse.org/Zest/Cloudio&quot;&gt;Zest Cloudio&lt;/a&gt; toolset came along recently, I thought it would be an interesting way to quickly see what exactly people were really talking about. I think the results speak for themselves. Thanks to  Stephan Schwiebert for this &lt;a href=&quot;http://fsteeg.com/2011/09/07/cloudio-swt-based-tag-cloud-visualization-for-zest/&quot;&gt;great contribution&lt;/a&gt;. One of the downsides of this approach is that unlike in our graph visualizations, you lose concept proximity. So for example, looking at the cloud you can instantly see that Tunisia and Lebanon are frequently mentioned, but what you can&#39;t see is how frequently they are used together. That&#39;s what our graph visualization tools do now, and I think there are some neat possibilities for marrying the two approaches.&lt;br /&gt;
&lt;br /&gt;
Butterflyzer work has kicked back into high gear, and I&#39;m currently collecting live streaming data from Twitter on the OccupyWallStreet movement. I can&#39;t wait to put together a similar word cloud for it. Obviously, a lot has changed in Egypt in the nine months since this data was collected. Who knows what will have changed here nine months from now?&lt;br /&gt;
&lt;br /&gt;
Methodology: The data was collected from 10,000 tweets between Jan 23 and 29th containing the word &quot;egypt&quot;. We then extracted word counts, removing common english words and other noise, and then visualized the remaining words with Cloudio, sizing for frequency of use.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaIuOQ44qtRnvWRGB9ksPd5kpB4qwRKObjQLQAYA7_xNbcu0IhnLqo4ZIpUIcR18P6CAHZs-qeYDB725egupHWAEHfGOrxp-_TorQMDV2Ar-wXNFy4QmY0wI1L34Fi3p3MWkvIwC_h564/s1600/EgyptCloud.png&quot; imageanchor=&quot;1&quot; style=&quot;&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;100%&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaIuOQ44qtRnvWRGB9ksPd5kpB4qwRKObjQLQAYA7_xNbcu0IhnLqo4ZIpUIcR18P6CAHZs-qeYDB725egupHWAEHfGOrxp-_TorQMDV2Ar-wXNFy4QmY0wI1L34Fi3p3MWkvIwC_h564/s1600/EgyptCloud.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfyr2r4THmJHkv9zCmXvmjtwIRKkWRmyjLGXxqTvBM0ocnBeJw0J_PeidkVSmuZNmEU8t6yWMZxuUG6WMnWF7VLSREUfCUJHntOIS26fyhJzlyhiHBqPDlA80KYWAuKUDQ7AF4j553DK0/s1600/EgyptCloudHorizontal.png&quot; imageanchor=&quot;1&quot; style=&quot;&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;100%&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfyr2r4THmJHkv9zCmXvmjtwIRKkWRmyjLGXxqTvBM0ocnBeJw0J_PeidkVSmuZNmEU8t6yWMZxuUG6WMnWF7VLSREUfCUJHntOIS26fyhJzlyhiHBqPDlA80KYWAuKUDQ7AF4j553DK0/s1600/EgyptCloudHorizontal.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</description><link>http://milesparker.blogspot.com/2011/10/arab-spring-cloudio-and-butterflyzer.html</link><author>noreply@blogger.com (Miles Parker)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaIuOQ44qtRnvWRGB9ksPd5kpB4qwRKObjQLQAYA7_xNbcu0IhnLqo4ZIpUIcR18P6CAHZs-qeYDB725egupHWAEHfGOrxp-_TorQMDV2Ar-wXNFy4QmY0wI1L34Fi3p3MWkvIwC_h564/s72-c/EgyptCloud.png" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-2275597805632130529</guid><pubDate>Fri, 09 Sep 2011 22:02:00 +0000</pubDate><atom:updated>2011-09-09T16:30:52.368-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>Eclipse BFDT Project Proposal</title><description>Hi all. I wanted to let folks know about a new project proposal I&#39;m considering, and ask for your feedback and support. I&#39;m really hoping you&#39;ll consider participating signing on as an interested party or mentoring this effort.&lt;br /&gt;
&lt;br /&gt;
As you can see from the proposal, I&#39;ve removed certain identifying features from the initial proposal. As we&#39;ve seen in other recent cases on the Open Source community, project branding and naming can sometimes present certain difficulties. If you promise that you are not easily offended, you can find out more about the project by visiting the &lt;a href=&quot;http://metascapeabm.com/bf-proposal/proposal.html&quot;&gt;project proposal page&lt;/a&gt;. What do you think, worth submitting?&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://metascapeabm.com/bf-proposal/proposal.html&quot;&gt;&lt;img src=&quot;http://metascapeabm.com/bf-proposal/BFClean.png&quot; width=&quot;800px&quot; href=&quot;http://metascapeabm.com/bf-proposal/proposal.html&quot;/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I put the proposal together in an hour or two, so to everyone who says that the Eclipse process is too heavyweight -- just shut the ____ up, ok?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update:&lt;/b&gt;Someone already beat me to &lt;a href=&quot;http://code.google.com/p/bf-eclipse/&quot;&gt;it&lt;/a&gt;. ___.</description><link>http://milesparker.blogspot.com/2011/09/eclipse-bfdt-project-proposal.html</link><author>noreply@blogger.com (Miles Parker)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-7532613391605868187</guid><pubDate>Thu, 08 Sep 2011 20:00:00 +0000</pubDate><atom:updated>2011-09-08T13:06:51.507-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">emf</category><category domain="http://www.blogger.com/atom/ns#">graphics</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">mylyn</category><title>Mylyn + Your GMF Models = Love?</title><description>As a quick follow-up to my &lt;a href=&quot;http://milesparker.blogspot.com/2011/09/mylyn-modeling-love.html&quot;&gt;post&lt;/a&gt; yesterday, here&#39;s an overview on how to integrate Mylyn with your own GMF editors. We&#39;ll be maintaining this on the Mylyn for Modeling &lt;a href=&quot;http://wiki.eclipse.org/Mylyn/Context/Modeling_Bridge#Developers&quot;&gt;wiki page&lt;/a&gt; but I wanted to share it with you here as well so you can see how easy it is to get the Mylyn love into your diagrams.&lt;br /&gt;
&lt;br /&gt;
There are a number of artifacts to take care of but much of it is boiler-plate. (It would be straightforward to support this with a simple meta-model and code generation, hint, hint..) Please let us know if you have any difficulties or improvements for the below steps.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;The Basic Idea&lt;/h3&gt;&lt;p&gt;Users aren&#39;t interested in the &lt;i&gt;diagram&lt;/i&gt; objects, they&#39;re really interested in the underlying domain or model objects. In the Mylyn Java integration, for example, Java classes and methods are tracked, and then revealed in various ways in different editors. So for an EcoreTools model for example, we don&#39;t want or need to keep track of the diagram Node objects or any other reference in the various foo.gmf.. files for, we want the domain object itself, e.g. EClass, EPackage, etc.. in the corresponding foo.ecore resource. What we need to do is to define what the user might be interested (or not interested) in and then map that to the diagram editors and other editor types.&lt;/p&gt;&lt;h3&gt;Your Turn!&lt;/h3&gt;The best thing to do is just start with one of the two existing projects. We&#39;d recommend org.eclipse.mylyn.modeling.papyrus.ui. org.eclipse.mylyn.modeling.ecoretools.ui will give you some ideas about how to work with a more complex scenario.&lt;br /&gt;
&lt;h4 id=&quot;Refactor_Artifacts&quot;&gt;Refactor Artifacts&lt;/h4&gt;Rename files and other artifacts with the appropriate names. For example in your GMF &quot;Foo&quot; Diagram tool:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Uml2DiagramDecoratorProvider -&amp;gt; FooDiagramDecoratorProvider&lt;/li&gt;
&lt;li&gt;In Plugin.xml &lt;pre&gt;&amp;lt;decoratorProvider class=&quot;org.eclipse.mylyn.internal.modeling.papyrus.Uml2DiagramDecoratorProvider&quot;&amp;gt;&lt;/pre&gt;Becomes: &lt;pre&gt;&amp;lt;decoratorProvider class=&quot;org.you.foo.FooDiagramDecoratorProvider&quot;&amp;gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;etc..&lt;/li&gt;
&lt;/ul&gt;&lt;h4 id=&quot;Define_Model_Specific_Behavior&quot;&gt;&lt;/h4&gt;&lt;p&gt;Here&#39;s where the non-boiler plate stuff is.&lt;/p&gt;&lt;h5 id=&quot;Structure_Bridge&quot;&gt;Structure Bridge&lt;/h5&gt;&lt;p&gt;In FooStructureBridge, you&#39;ll define domain objects which should be managed by Mylyn. This is how it is implemented in UML2StructureBridge:&lt;/p&gt;&lt;pre&gt;@Override
 public Class&amp;lt;?&amp;gt; getDomainBaseNodeClass() {
  return Element.class;
 }

 @Override
 public Class&amp;lt;?&amp;gt;[] getDomainNodeClasses() {
  return new Class[] { Classifier.class };
 }

 @Override
 public Class&amp;lt;?&amp;gt; getDomainBaseEdgeClass() {
  return Relation.class;
 }

 @Override
 public Class&amp;lt;?&amp;gt;[] getDomainEdgeClasses() {
  return new Class[] { Relation.class };
 }
&lt;/pre&gt;&lt;p&gt;See DomainModelContextStructureBridge for API details .&lt;/p&gt;&lt;h5 id=&quot;Diagram_Bridge&quot;&gt;Diagram Bridge&lt;/h5&gt;&lt;p&gt;In FooUiBridge, you&#39;ll define diagrams and views which should be managed by Mylyn. In UML2UiBridge, the important bits are:&lt;/p&gt;&lt;pre&gt;@Override
 public boolean acceptsPart(IWorkbenchPart part) {
  return part instanceof PapyrusMultiDiagramEditor;
 }

 @Override
 public boolean acceptsViewObject(Object domainObject, Object part) {
  if (domainObject instanceof Classifier) {
   return part instanceof ClassEditPart;
  }
  if (domainObject instanceof Package) {
   return part instanceof PackageEditPart;
  }
  //Edges
  if (domainObject instanceof Relationship) {
   return part instanceof ConnectionNodeEditPart;
  }
  return false;
 }
&lt;/pre&gt;&lt;p&gt;See DiagramUiBridge for details.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&lt;br /&gt;
Simple, Eh? Just a lot of search and replace. If you want to contribute or help with code generation for this, that would be a really nice...&lt;br /&gt;
&lt;br /&gt;
So try it out and please let us know how it goes or if you run into trouble. &lt;b&gt;It would be awesome to see more complex examples of Mylyn based GMF model editors, so please experiment and share your examples!&lt;/b&gt; And don&#39;t forget to check the &lt;a href=&quot;http://wiki.eclipse.org/Mylyn/Context/Modeling_Bridge#Developers&quot;&gt;Wiki Page&lt;/a&gt; as that&#39;s where the up to date documentation will be.</description><link>http://milesparker.blogspot.com/2011/09/mylyn-your-gmf-models-love.html</link><author>noreply@blogger.com (Miles Parker)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-5501287565541539045</guid><pubDate>Wed, 07 Sep 2011 00:46:00 +0000</pubDate><atom:updated>2011-09-06T17:46:20.609-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">emf</category><category domain="http://www.blogger.com/atom/ns#">graphics</category><category domain="http://www.blogger.com/atom/ns#">mylyn</category><category domain="http://www.blogger.com/atom/ns#">visualization</category><title>Mylyn + Modeling = Love</title><description>It&#39;s been a while since I&#39;ve posted anything here. Been busy doing real work -- you know, the kind that &lt;i&gt;other people&lt;/i&gt; pay &lt;i&gt;you&lt;/i&gt; to do. Specifically, I&#39;m delighted to be working with the team at Tasktop, where I&#39;ve been focussing on taking all of the Cool Stuff™ that Mylyn does and making it work with Eclipse modeling tools. &lt;br /&gt;
&lt;br /&gt;
This looks like a match made in heaven. Eclipse is a great IDE, but if one were just looking for an IDE, there are many alternatives. But I think I can safely say that the Eclipse &lt;i&gt;ecosytem&lt;/i&gt; has no real competition. What makes Eclipse truly great is not the bundled Java development tools, but the powerful and highly adaptable platform design, and most importantly of all, the open, transparent, and quality-focussed community structure that the Eclipse Foundation has worked so hard to build. &lt;i&gt;That&lt;/i&gt; allows anyone with a good idea -- and the resources to make it a reality -- to play in the same sandbox as everyone else. For me, there are two exemplars for the potential of the ecosystem to be much more than the sum of its parts.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;The &lt;b&gt;Eclipse Modeling Tools&lt;/b&gt;, including EMF and related tools, are what brought me to Eclipse platform in the first place. If you want to do real-world Model Driven Software Development, it would be hard to make a case for anything else.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Mylyn&lt;/b&gt; demonstrates the kind of practical invention that is possible when a platform is really open. It provides a unique task-focussed approach to development. Admission time: It takes a bit of up-front investment to really grok Mylyn, and I didn&#39;t take the time needed to really integrate it with my day-to-day development effort until I started working with Tasktop. Working on my own and setting my own tasks, I just never really thought I needed it. But now that I&#39;m back working with a team of developers on a regular basis, with dozens of tasks to keep track of, I&#39;d be seriously annoyed not to have it.&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
In many ways, the match was remarkably -- sometimes ridiculously -- easy. It is a really cool experience when you work with completely different technologies that have been designed for adaptation to arbitrary uses, and those designs actually work! In some cases, such as making the Ecore Tools project manager integration work with the modeling context bridge, the actual implementation (minus all of the project packaging, .xml bits, etc..) was only a few lines of code.&lt;br /&gt;
&lt;br /&gt;
Still, the connection didn&#39;t seem quite so natural when the two got together for a first date. David Green had put together &lt;a href=&quot;http://greensopinion.blogspot.com/2008/12/mylyn-context-driven-domain-diagram.html&quot;&gt;something similar&lt;/a&gt; a couple of years ago, so I knew it was possible. But would sparks fly? Text and tree editors are naturally places for approaches that constrain and contextualize data selections. Graph structures are even better. The problem is that most diagramming artifacts aren&#39;t really graph structures -- they&#39;re actually pretty (or let&#39;s be honest, usually not so pretty..) pictures of graph structures.&lt;br /&gt;
&lt;br /&gt;
The typical approach to software model diagrams is to take a snapshot of entities and their relationships and stick them on the wall. And people get really attached to where different elements are on that wall. In fact, I think one of the greatest anti-patterns for graphical modeling tools is to treat the pictures as the most important artifact of all...but I&#39;m getting off-topic. The important point is that for the common types of diagrams such as UML class diagrams and Ecore we can&#39;t really move things around. Or we can, but then they wouldn&#39;t be the same artifact anymore. Again, that&#39;s because with many diagram tools the layout and location of various entities have semantic meaning, or at least people treat them like they do. And in practice, GMF doesn&#39;t provide a facility for changing any aspect of the actual diagram without affecting the persisted model. That seems like a no-no for a tool like Mylyn which is intended to be assisting developers, not modifying artifacts.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://wiki.eclipse.org/images/c/c7/EcoreMylyn.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://wiki.eclipse.org/images/c/c7/EcoreMylyn.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;So clearly a good dose of gentle persuasion and hand-holding was called for. And I discovered that what GMF does have is support for decorators. Decorators essentially allow you to annotate a model &lt;i&gt;without&lt;/i&gt; affecting the artifact itself. Rather than mucking about with the layout, could something workable be accomplished with creative decorations? The idea that made the most sense to me was to mask out the parts that aren&#39;t interesting, unmask or highlight pieces that are, and then sort of &quot;ghost in&quot; the other bits as people navigate the structure. I think it worked out pretty well, but I&#39;m anxious to hear what you think. Does this approach make a decent trade-off between hiding the information you don&#39;t want to see and making it easy to discover the information that you do?&lt;br /&gt;
&lt;br /&gt;
Those who have worked with the GMF Runtime may not be surprised to hear me say that the mechanism for doing all of this didn&#39;t seem exactly straightforward. You know how some frameworks seem never to have met an abstraction that they didn&#39;t like? There are probably great reasons for every one of the levels of generalization provided by the decoration and related mechanisms, but taken together there were a lot of pieces to grok. Thankfully, the EMF Compare team had just done a &lt;a href=&quot;http://eclipsemde.blogspot.com/2011/06/whats-next-in-emf-compare.html&quot;&gt;similar integration&lt;/a&gt; so I was able to learn a lot from that. But with a few false starts and uncomfortable moments, I can happily report that the couple is doing quite well, and I&#39;m happy to have played a small role in this little bit of bliss.&lt;br /&gt;
&lt;br /&gt;
It&#39;s not quite &quot;official&quot; yet, but there should be a contribution to Eclipse quite soon. In the meantime, it&#39;s reasonably stable and works with Ecore Diagrams and Papyrus UML Class diagrams. Details are &lt;a href=&quot;http://wiki.eclipse.org/Mylyn/Modeling_Bridge&quot;&gt;here&lt;/a&gt; and we&#39;d appreciate your bug reports and especially ideas for improvements.  &lt;br /&gt;
&lt;br /&gt;
Oh, ok... while I was at it, I grabbed a video of the two in action. Was that wrong of me?&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;510&quot; src=&quot;http://www.youtube.com/embed/jnbzyrlUzlA?hd=1&quot; width=&quot;853&quot;&gt;&lt;/iframe&gt;</description><link>http://milesparker.blogspot.com/2011/09/mylyn-modeling-love.html</link><author>noreply@blogger.com (Miles Parker)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/jnbzyrlUzlA/default.jpg" height="72" width="72"/><thr:total>9</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-2680315816532640321</guid><pubDate>Thu, 23 Jun 2011 19:42:00 +0000</pubDate><atom:updated>2011-06-23T12:51:19.456-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business</category><category domain="http://www.blogger.com/atom/ns#">dharma</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>The Indolent Development Manifesto</title><description>Every once an a while, a new way of thinking comes along that is so powerful, so unique, so practical -- just so damn cool, really -- that it catches on naturally with no real effort on the part of the innovators who created it. A decade or so ago it was &quot;Extreme Programming&quot; and then &quot;Agile Development&quot;. Remember? It seemed like a crazy idea one day, then something you had to spend months talking your boss into the next day, and then the next it had become accepted practice. In other words, totally not-cool. You ended up feeling like that annoying guy who says that REM only went downhill after Murmur, and that he can&#39;t even stand to listen to any of the later stuff. Then you realize that that anecdote only makes sense to 20% of your readers. Then you feel like that old guy smoking by the fire exit, talking about how he could have done any of that so-called Business Process Management just as easily in COBOL and it would have been more maintainable. Where was I going with this?&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNuJqzNAEmpWLurxuc5DjMookqty01fMxZ4OIgdgEz0dcZ8thQPqJTb0uq-dLZFlCiRzYJpo8dfo3kuSky906VOVPR7rbuZMsGE1LUNQ2Xka5p2O2pk6hq0x9wjZU-4_7yYM0lmfVNLII/s1600/wiros.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;800&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNuJqzNAEmpWLurxuc5DjMookqty01fMxZ4OIgdgEz0dcZ8thQPqJTb0uq-dLZFlCiRzYJpo8dfo3kuSky906VOVPR7rbuZMsGE1LUNQ2Xka5p2O2pk6hq0x9wjZU-4_7yYM0lmfVNLII/s800/wiros.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Oh yeah... today I wanted to introduce to you a new paradigm for Software Development, one that seems as radical now as Agile did back in the day, but that fits in so well with the way that we &lt;i&gt;really want to do&lt;/i&gt; software development that you&#39;ll wonder why it took someone so long to write it down. (I&#39;m wondering the same thing myself right now.) In fact, you may already be engaging in some of the practices without ever having really bothered to think about it. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCF3GeBUitsibKgZCxHbHfJ_PZe_Y0X86JzmW7cnn577Pf4xrUmtK0_glOTpJHHFwxsKbuC09y1lbTbLG-KChUKvyFKybFJeFYrONaOqdJZLhVHMwJZJ4iXSyPKrS75H445cmaHtMXyq0/s800/msciba.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;800&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCF3GeBUitsibKgZCxHbHfJ_PZe_Y0X86JzmW7cnn577Pf4xrUmtK0_glOTpJHHFwxsKbuC09y1lbTbLG-KChUKvyFKybFJeFYrONaOqdJZLhVHMwJZJ4iXSyPKrS75H445cmaHtMXyq0/s800/msciba.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Before introducing Indolent, I need to give credit where credit is due. I&#39;d be more than remiss if I didn&#39;t acknowledge the work of important innovators in this transformative approach. I&#39;m speaking of course of Ken Laidback, and his LaZy-Ass Programming approach. For those who haven&#39;t been keeping up with the hot trends in software methodologies for the last couple of years, well, you&#39;ve got the right idea. Just keep being who you are. But most of us need a point in the right direction -- a formula of some kind -- and that&#39;s what Ken and his merry band of hacksters has given us. In a nutshell, LaZy-Ass Programming -- later referred to without that cute capitalization in a failed bid to satisfy those uptight &quot;Suits&quot;, the people who are always looking around for shallow opportunities to make &quot;money&quot; -- was an attempt to solidify and round out a set of behaviors that the initial practitioners had found made them happiest. Rather than a set of &quot;Processes&quot;, or even &quot;Practices&quot;, Lazy-Ass was at heart a set of &quot;Excuses&quot; and &quot;Rationalizations&quot; for behavior that fit in with the way programmers &lt;i&gt;really&lt;/i&gt; wanted to do things anyway. But the real beauty of Lazy-Ass was not the Rationalizations themselves, but they way they all fit together into an absolutely water-tight container capable of keeping the practitioners warm, dry and responsibility free, happily doing &quot;Cool Stuff&quot; -- defined as &quot;what you want to do&quot; as opposed to &quot;what the Suits &lt;i&gt;think&lt;/i&gt; you should do&quot; -- for years to come.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWTF1e3N4-pQvHWNMz_ZuB4Zwd3p_jFPOD1OAhhrleuBDCVAaPqTSKmM7rvQKL5Wfr27UgvjhhML1pEM63vlwMgjcc7i9pfYzul7xD0pt-xwbRYdwsVDOoah_ZqX_ii1fafP7HoF9ASrA/s1600/jefgodesky.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear:right; float:center; margin-left:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWTF1e3N4-pQvHWNMz_ZuB4Zwd3p_jFPOD1OAhhrleuBDCVAaPqTSKmM7rvQKL5Wfr27UgvjhhML1pEM63vlwMgjcc7i9pfYzul7xD0pt-xwbRYdwsVDOoah_ZqX_ii1fafP7HoF9ASrA/s400/jefgodesky.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
A couple of examples should give you a flavor for how these interlocking rationalizations work in real life. &quot;Task Shuffle&quot; invites practitioners to take on unrelated random tasks and then swap them with others at random intervals so that the Suits are never really able to identify who is responsible for what. &quot;Goat&quot; gets (almost) everyone together in an effort to identify one or two people on the team who will take on responsibility for those few unavoidable cases where &quot;Task Shuffle&quot; fails -- by concentrating blame, the rest of the team is able to focus on &quot;Whatever the Hell I Want&quot;, thus doing Cool Stuff. &quot;Welcome to the Team, Let Me Buy You Lunch&quot; ensures a steady supply of new recruits to take on the Goat role.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRqhc0UiYiQi46iF6pUJlEaGa-0LzSQn5loroXPApvUu5729SxyaT9LFXe0wD9pjQYO8MRsjLuQ-qJGI8mjJeIz03Mh01pRvZNFfqa8hNDHzRozkCRKXuNjo2UeAoSZKK9QM8JwqQ0I88/s800/pagedooley.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;800&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRqhc0UiYiQi46iF6pUJlEaGa-0LzSQn5loroXPApvUu5729SxyaT9LFXe0wD9pjQYO8MRsjLuQ-qJGI8mjJeIz03Mh01pRvZNFfqa8hNDHzRozkCRKXuNjo2UeAoSZKK9QM8JwqQ0I88/s800/pagedooley.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Most of us are familiar with the rest of the history. Lazy-Ass managed to establish itself in a number of key domains, most notably government contracting and systems integration. Here, the interests of the programmers and the rest of the stakeholders (excluding the &quot;Customer&quot;, whose role is largely secondary, and some would argue purely mythical) strongly coincided. But it never caught on in the mainstream. I&#39;m going to say something a bit controversial here. I think the real reason for this was mostly packaging. Yes folks, how you present things matters! Lazy-Ass Programming got a bad rap because of its name and the over-enthusiasm of early practitioners. &quot;Lazy-Ass&quot; was simply to* cute and -- let&#39;s face it -- provided a little too much of a clue about the deeper methodological agenda for those executives concerned with external appearances and shallow concerns like &quot;income&quot;. Later innovations like &quot;Rats and Ships&quot; and &quot;Bigger-Better-Deal&quot; convinced some junior execs to buy in, but it was a matter of too little, too late. And yes...let&#39;s admit that some of the early practitioners &lt;i&gt;were&lt;/i&gt; just a little too dogmatic. Let&#39;s be realistic, you&#39;ve got to throw the dog a bone once in a while. Still, even if not in name, the spirit of Lazy-Ass lives on in all sorts of efforts and at all sorts of organizations, big and small.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuH3kokQ3Az41R9fKFTRc8xmfts6iLw-MxOzgHE58biUMEuJe_B9I7I71NAx8z_R1sqk8J5k2Mo04hinT8LIQ5LEpb-IGY9-l6IkZJDRqNqzxLFCWj_kXeVf_A9mVCMX8UOQoOfeIFR6Y/s1600/antoniofurno.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuH3kokQ3Az41R9fKFTRc8xmfts6iLw-MxOzgHE58biUMEuJe_B9I7I71NAx8z_R1sqk8J5k2Mo04hinT8LIQ5LEpb-IGY9-l6IkZJDRqNqzxLFCWj_kXeVf_A9mVCMX8UOQoOfeIFR6Y/s800/antoniofurno.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Some of you may be aware that as of this writing, the Eclipse Project Indigo Release just shipped. This project involved the simultaneous release of 62 separate projects and...um, a bunch of lines of code but I&#39;m too lazy to look it up, and LOC is a lousy metric anyway...all at once. This sets a &lt;i&gt;terrible&lt;/i&gt; precedent for those of us who simply want to do &quot;Cool Stuff&quot; and who are above caring whether people can or will actually use it. In fact, I can&#39;t think of a more colossal failure for the Lazy-Ass approach. That&#39;s why I&#39;ve chosen to introduce my new methodology now. If it takes hold, perhaps we can prevent a worse atrocity next year.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1W0eE1286sJqkqmCaFwcZjy7GTSyd0zzGnRRDjQoK8SwOenO9ta60F2E14ZTPRP5Jc30E32pMY40dH8Lj7_g8__DQnGtao0cT37RIY3t-5I2BH2_fn0qzc8F1FeIIBBg0cv1_XI8eTSI/s800/EclipseEmpty.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;800&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1W0eE1286sJqkqmCaFwcZjy7GTSyd0zzGnRRDjQoK8SwOenO9ta60F2E14ZTPRP5Jc30E32pMY40dH8Lj7_g8__DQnGtao0cT37RIY3t-5I2BH2_fn0qzc8F1FeIIBBg0cv1_XI8eTSI/s800/EclipseEmpty.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
My new methodology is called &quot;Indolent Development&quot;, and I own the trademark so don&#39;t even think of borrowing it without giving me attribution and a nice cut of the action. I&#39;m going to replace Agile -- everyone knows that that&#39;s totally broken anyway -- and in the process make a million dollars. Yes, that&#39;s right, training courses are in development right now, and soon you&#39;ll be able to get personalized coaching from a highly-trained, experienced network of Indolent Masters. The major thrust of Indolent is to be much more &quot;CIO friendly&quot;. Even the term &quot;Indolent&quot; was carefully chosen to fly under the corporate radar while amusing those of us &quot;in the know&quot;. (You&#39;d be surprised at how obtuse many corporate leaders are.) Indolent Development involves just ten core principals. These principals* are designed to maximize Cool Stuff, allow plenty of Slack, and reduce or eliminate exposure to Downside Risk for the practitioner. &lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;YNKWYMNI&lt;/b&gt; &quot;You Never Know When You Might Need It&quot;: If it seems kind of cool, put it in! You can always take it back out later.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;YBIYFI&lt;/b&gt; &quot;You Broke It, You Fix It&quot;: This one is all about Shared Bug Ownership. Example dialog: &quot;It worked fine when I wrote it. I&#39;ve moved on to something much cooler now. YBIYFI!&quot;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The Random Walk&lt;/b&gt; If you&#39;re really thinking outside of the box, a plan only gets in the way. In fact, thinking ahead at all is a sure way to kill innovation.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interrupted Integration&lt;/b&gt; Example dialog: Hey, this worked last month. WTF?! Look, just give me a couple of weeks to sort this out, and it will probably be working great for the next build. Unless someone breaks something else in the meantime.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Refutzing&lt;/b&gt; Let&#39;s take everything apart and put it back together. Maybe it will work &lt;i&gt;this&lt;/i&gt; time.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Users Lie&lt;/b&gt; They don&#39;t know what they really want. Why waste time asking them?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Test Later&lt;/b&gt; Why bother fixing it if you don&#39;t know its* broken? Real programmers have confidence. (It&#39;s important to note that testing does serve a purpose. &quot;Test Weenies&quot; make good &quot;Goats&quot;, because you can always point out their failed tests.) An advanced form of this practice is &lt;b&gt;Test Never&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Eight&lt;/b&gt;, eight, I forget what eight was for.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Self-Expression&lt;/b&gt; You&#39;re special. Why shouldn&#39;t your code reflect that? When you die, won&#39;t it feel good knowing that somewhere buried in that nuclear reactor code there is a special little nugget that only you can &lt;i&gt;really&lt;/i&gt; appreciate?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;No Best Practices&lt;/b&gt; When a good idea becomes dogma, anti-dogma becomes a good idea.&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
And actually, if you take nothing away from this article, that last point is it. In fact, you could say that it is the only point that really matters.&lt;br /&gt;
&lt;br /&gt;
&lt;small&gt;*Hey Mr. Suit, programmers can&#39;t spell and frequently confuse homophones. Get over it.&lt;/small&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update:&lt;/b&gt; I added a bunch of cool pictures so that my blog is just like Ed Merks&#39;. Except I was too lazy to take my own pictures. So I stole some off the internet when I was supposed to be working on software builds. Also, because I&#39;m working on builds &lt;i&gt;yet again, &lt;b&gt;god-damn-fuck-it-all-to-hell&lt;/b&gt;&lt;/i&gt;, I&#39;m kind of in a bad mood, so they&#39;re all pretty depressing and uninspiring. Sorry. I hope your day is going better, sincerely.&lt;br /&gt;
&lt;br /&gt;
&lt;small&gt;&lt;b&gt;Image Credits:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/photos/wiros/4572128030/in/photostream/&quot;&gt;Guy who is almost as cool as I am, but someday will also be just like COBOL guy&lt;/a&gt;, Wiros&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/photos/msciba/2250637037/sizes/l/in/photostream/&quot;&gt;Nose Picker&lt;/a&gt;, Millicent Bystander&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/photos/jefgodesky/5133302696/sizes/z/in/photostream/&quot;&gt;Lazy Sign&lt;/a&gt;, Jef Godesky&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/photos/pagedooley/2536653487/sizes/l/in/photostream/&quot;&gt;The Most Depressing Place on Earth, After Fire&lt;/a&gt;, Kevin Dooley&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/photos/antoniofurno/1031022163/&quot;&gt;Meeting Interessante&lt;/a&gt;, Antonio Furno&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/photos/11513812@N02/5564062159/sizes/l/in/photostream/&quot;&gt;Just like my EclipseCon talk&lt;/a&gt;, Out.Of.Focus (Why do Flickr people not have real names?)&lt;/li&gt;
&lt;/ul&gt;&lt;/small&gt;</description><link>http://milesparker.blogspot.com/2011/06/indolent-programming-manifesto.html</link><author>noreply@blogger.com (Miles Parker)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNuJqzNAEmpWLurxuc5DjMookqty01fMxZ4OIgdgEz0dcZ8thQPqJTb0uq-dLZFlCiRzYJpo8dfo3kuSky906VOVPR7rbuZMsGE1LUNQ2Xka5p2O2pk6hq0x9wjZU-4_7yYM0lmfVNLII/s72-c/wiros.jpg" height="72" width="72"/><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-6756232969120928554</guid><pubDate>Thu, 16 Jun 2011 04:08:00 +0000</pubDate><atom:updated>2011-06-15T22:36:51.555-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business</category><category domain="http://www.blogger.com/atom/ns#">butterflyzer</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">graphics</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">science</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Butterflyzer Alpha 5</title><description>When I first thought about turning Butterflyzer into a product, I really had no idea whether people would grok it or not. It seemed to me that if I couldn&#39;t at least get that hard-core group of &quot;pioneers&quot; to take a look and find some value in it, it really wasn&#39;t worth doing. Now, Butterflyzer has about 75 followers on Twitter, which is getting frighteningly close to 100, the point at which we&#39;ve said we&#39;d deliver that promised Beta. So what to do now? Why, add a whole bunch of features / potential defects, of course! In this case, these are features that I&#39;ve been wanting to build in from the beginning, but they&#39;ve also been driven by the survey feedback we&#39;ve been getting.&lt;br /&gt;
&lt;br /&gt;
One request had been to provide Butterflyzer as an Eclipse plugin. Done! This means that if you&#39;re already using Eclipse you can fully integrate Butterflyzer with the rest of your workbench and workflow. Just head on down to the Eclipse Marketplace and grab yourself a free alpha! (But remember, it is Alpha software and you might end up with that dreaded spinning wheel of death, or worse, so you might not want to keep it in your main production environment just yet.) After installing the plugin, just open the Butterflyzer perspective, create a new general project, create a new Butterflyzer model using the wizard, open it up, and type a search phrase into the toolbar text box. And then see what comes up!&lt;br /&gt;
&lt;br /&gt;
One of the least expected feedback items I&#39;ve received is that while many people find the graph visualization to be really compelling, a lot of people don&#39;t see much obvious value in it -- they often see the real value in the organization and curation capabilities. I do think there is a huge potential for dynamic graph visualization in allowing people to understand deep semantic relationships, but I also am getting the idea that the graphs are not the point -- the information is. Tools like Mylyn / Tasktop have done a great job of putting the graph behind the scene without losing the representational power that the graph structure provides. And that&#39;s what this release has been focussed on... making it easy to navigate through the information you want in a very direct way, without losing the rich structure behind it. As this vision gets built out, hopefully the whole idea behind &quot;Think Outside of the Browser&quot; will become more clear.&lt;br /&gt;
&lt;br /&gt;
To facilitate this, there have been a number of improvements to overall usability. Elements having the same connections are grouped together in a nicer way..&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjypJ8572YkjsVJJPFSrdGnxyh4PRJzHMv45xWR3UCGBpN31df-L_JAHb4k7IB9X9ft6SWmuiKHz1goijntl6apmJkB-hgPjUZR3MpMQCVCI1gCS3F32CpG65KUhzhAilcFlXWGm_quPkw/s1600/Alpha5GraphGroup.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;100%&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjypJ8572YkjsVJJPFSrdGnxyh4PRJzHMv45xWR3UCGBpN31df-L_JAHb4k7IB9X9ft6SWmuiKHz1goijntl6apmJkB-hgPjUZR3MpMQCVCI1gCS3F32CpG65KUhzhAilcFlXWGm_quPkw/s1600/Alpha5GraphGroup.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
And toolbars and captions are better integrated with the graph visualization..&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivxO1ae866KbkNV3WPpPT-xcrDF-OMt_MjtTf-VYuVb7SocVpvxyJKNFiYh7vi34TzR2OfsaaP_C2gfshIyvuLR09Ehb3vmahkY0fbRdeRvdrBPesfpbCokJK56O1UHn4mBTQ0L5opOYo/s1600/Alpha5GraphCaption.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;100%&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivxO1ae866KbkNV3WPpPT-xcrDF-OMt_MjtTf-VYuVb7SocVpvxyJKNFiYh7vi34TzR2OfsaaP_C2gfshIyvuLR09Ehb3vmahkY0fbRdeRvdrBPesfpbCokJK56O1UHn4mBTQ0L5opOYo/s1600/Alpha5GraphCaption.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
You&#39;ll notice that the web pages in the captions are automatically pared down to grab just the important details from the site. OK, that part needs some work, as you can see below, but it already better than trying to scroll through a little page with a bunch of ads and image links. By clicking the toolbar, the caption expands (with a nice animation) so that you can see the full web page...&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIOoZlPKSpDSPwiNIK3bd4AqGqxLNAqMGVPZrzxslHgBzZrAARLIL3z1HJGc389hWsRAqpD1MCwKmiO69NmPlg7SwqcuTxpBSqD0ntcRT_t25Hu_c0V6o6KK2mhPQGkh0H9yuyHnB5kgc/s1600/Alpha5SemanticBrowser.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;100%&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIOoZlPKSpDSPwiNIK3bd4AqGqxLNAqMGVPZrzxslHgBzZrAARLIL3z1HJGc389hWsRAqpD1MCwKmiO69NmPlg7SwqcuTxpBSqD0ntcRT_t25Hu_c0V6o6KK2mhPQGkh0H9yuyHnB5kgc/s1600/Alpha5SemanticBrowser.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
But the most important feature is that Butterflyzer now becomes a very powerful semantic browser. Notice that embedded in the page are buttons for semantically tagged items. Tags are created for semantics that OpenCalais has recognized, search terms that you&#39;ve used, and any other categories that you&#39;ve created. When you click on one of those items, you&#39;ll see all the items that relate to that tag within your browsing context. For example, we&#39;ve clicked on a prominent Eclipse personage here, and even though I can&#39;t spell his name, I can easily grab all of the articles mentioning him...&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBZ-m5DLt9Jjq1LZj0Rn2seiSep9ADPmczsCRmqfxvl1p-jdPOqRTUp8TaoKPJPdSDGRzb9VQ0i4bqQW31UE5X7Di-27lqGfOcY4NhAyjGslrC3GoI1PF3TTQQHNY0YoioqU08YwzeFQ4/s1600/Alpha5WebTiles.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;100%&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBZ-m5DLt9Jjq1LZj0Rn2seiSep9ADPmczsCRmqfxvl1p-jdPOqRTUp8TaoKPJPdSDGRzb9VQ0i4bqQW31UE5X7Di-27lqGfOcY4NhAyjGslrC3GoI1PF3TTQQHNY0YoioqU08YwzeFQ4/s1600/Alpha5WebTiles.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Now of course, if I was using an ordinary browser, I could have done a new search for &quot;Chris Ani.. Eclipse Indigo&quot;, but that would be a) unwieldy (I&#39;d copy and past his name from the list), b) slow, and c) I&#39;d have to look at  every page in turn to find out whether I was interested in the contents. With the revolutionary (sorry, couldn&#39;t resist) Butterflyzer Tile View, all of the matching pages that can fit comfortably on a single tile are loaded simultaneously. &lt;br /&gt;
&lt;br /&gt;
Form the Tile View, I can expand up full pages, click on the semantic tags within them, return to the graph, etc.. It&#39;s difficult to get a sense for how fluid this is and for the potential of the approach overall without trying it for yourself. &lt;br /&gt;
&lt;br /&gt;
You can do the same thing with Tweets -- here we&#39;ve selected a set of key Eclipse sources commenting on the Indigo release...&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbUpE0I5-4JJhqxZPe1JPnt9ovKmP9ujm9OkWVySxA79TSIolsfn5EEvUZc3AfWEpoECZlKsJan3qNKfeyf4Fqv8EQUtwfkdw0F2oFK-kDWitoPo4o3n0NjJoWAeeTbJrZvTax-C86Oq0/s1600/Alpha5TwitterTiles.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; width=&quot;100%&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbUpE0I5-4JJhqxZPe1JPnt9ovKmP9ujm9OkWVySxA79TSIolsfn5EEvUZc3AfWEpoECZlKsJan3qNKfeyf4Fqv8EQUtwfkdw0F2oFK-kDWitoPo4o3n0NjJoWAeeTbJrZvTax-C86Oq0/s1600/Alpha5TwitterTiles.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
By the way, we&#39;re looking at beefing up the Twitter component -- it&#39;s pretty low hanging fruit actually -- so that you can do all of your tweeting directly from Butterflyzer, but we do have to tread a bit lightly here to stay off of the &quot;Basic Twitter Client&quot; category -- Twitter has made clear that that is their territory. So how about it? If you think a really powerful full-featured analysis-oriented Twitter client should be part of the Butterflyzer feature set sooner rather than later, let us know.&lt;br /&gt;
&lt;br /&gt;
Hopefully that&#39;s given you a sense for what&#39;s new with Butterflyzer. Check it out, install the plugin, and let me know what you think!&lt;br /&gt;
&lt;br /&gt;
Oh yeah.. you can download it from &lt;a href=&quot;http://butterflyzer.com&quot;&gt;here&lt;/a&gt;. The plugin update site is &lt;code&gt;http://butterflyzer.com/downloads/alpha/update&lt;/code&gt; or just use Eclipse Marketplace. &lt;b&gt;Please note that the Butterflyzer plugin works with Indigo only (unless we get huge demand for legacy support) -- just one more good reason to download Indigo!&lt;/b&gt;</description><link>http://milesparker.blogspot.com/2011/06/butterflyzer-alpha-5.html</link><author>noreply@blogger.com (Miles Parker)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjypJ8572YkjsVJJPFSrdGnxyh4PRJzHMv45xWR3UCGBpN31df-L_JAHb4k7IB9X9ft6SWmuiKHz1goijntl6apmJkB-hgPjUZR3MpMQCVCI1gCS3F32CpG65KUhzhAilcFlXWGm_quPkw/s72-c/Alpha5GraphGroup.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-6721076084246643955</guid><pubDate>Tue, 17 May 2011 22:22:00 +0000</pubDate><atom:updated>2011-05-17T15:22:55.127-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">butterflyzer</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">science</category><category domain="http://www.blogger.com/atom/ns#">visualization</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Butterflyzer Alpha 4</title><description>We&#39;ve just released the latest Alpha for Butterflyzer. If you&#39;re not sure what Butterflyzer is, check out &lt;a href=&quot;http://milesparker.blogspot.com/2011/05/meet-butterflyzer-part-ii-what-does-it.html&quot;&gt;this article&lt;/a&gt; and &lt;a href=&quot;http://milesparker.blogspot.com/2011/04/meet-butterflyzer-part-i-is-this-any.html&quot;&gt;this one&lt;/a&gt;. You can download the free alpha &lt;a href=&quot;http://butterflyzer.com&quot;&gt;here&lt;/a&gt;. Most of the changes in Alpha 4 have to do UI improvements and overall user experience. First, we&#39;ve dealt with some important quality issues. Yes, this is Alpha software, but people should be able to use it with little pain as possible!&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Fixes&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Twitter Authorization&lt;/b&gt;: We&#39;ve finally laid to rest some really pesky issues. For very good reasons, Twitter wants to make sure that we use their authorization screen, which means that we need to deal with the inevitable changes that happen on their end. Still, there is nothing worse that getting a bunch of traffic to your site only to discover that your software doesn&#39;t actually work because something in the external environment has changed between the time you built and tested it and when it was deployed. OAuth is not the easiest technology to deal with, but it ensures that users have the last word when it comes to their accounts.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;UI Freezes&lt;/b&gt;: I also think we&#39;ve crushed the main issues with synchronization, aka &quot;the dreaded spinning ball of eternity&quot;. Butterflyzer is doing some pretty bleeding edge stuff with EMF and Zest visualization updating. An important part of the overall design has been to grab information in parallel so that while one process is waiting for a request to be serviced by a REST or another query somewhere, we&#39;re busy collecting all of the information we can from other sources. If you try it out I think you&#39;ll be impressed with just how much information you can suck down in a very short time -- we&#39;re using a lot of straws! So, we can have dozens of separate processes running at once, and they&#39;re all updating a live EMF model editor and Zest view, while the user is also interacting with the model! That&#39;s a perfect recipe for concurrency issues -- especially since according to Ed Merks, EMF isn&#39;t actually intended to be thread safe -- and while things have gone surprisingly well, we&#39;ve had our share. When the UI locks up, that has a definite impact on quality perception! The way we&#39;ve handled this is &lt;i&gt;not&lt;/i&gt; with a lot of thread blocking and synchronization calls. In my experience, that&#39;s a recipe for endless hacking. Instead, my strategy has been to treat the visualization in a very fail friendly way, while focussing on protecting the model from anything that happens in the UI. The last set of issues were due to the way EEF was handling updating. They couldn&#39;t have anticipated our usage and it was very easy to override the default behavior by swapping in a custom base component.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Other stuff&lt;/b&gt;: A lot of little glitches and annoyances have been taken care of. If you have some &#39;favorites&#39; that you&#39;d like looked at, now is the time to start letting us know.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Unresolved&lt;/b&gt;: The Google Insights, Exhibit and Timeline stuff is still really brittle. There are a bunch of time-consuming issues to resolve for that to work seamlessly.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Now on to the fun part...&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;What&#39;s New?&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Graph Visualization&lt;/b&gt;: Many improvements here. Some are subtle, but others dramatically change the feel and functionality, I think for the better. For example, grouped items are now all placed into a big text block. This improves performance &lt;i&gt;and&lt;/i&gt; readability. There is still a lot of experimentation to do and as you can see below, we&#39;ll be giving you more and more control over how the visualization is done. If you&#39;ve got feedback on any of this, please send a note.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Performance&lt;/b&gt;: Lot&#39;s of little things, especially in how large searches are handled add up to a more fluid experience. The &quot;full Butterflyzer&quot; -- Google Search, Twitter Tweet and Author Search and term processing, Topsy statistics and trackbacks and Semantic enrichment of 60-100 separate web pages -- is finished in just a couple of minutes, with the key results available right away. By the time you are interested in the more complex stuff, it&#39;s already there. For comparison, when I first started experimental implementation of the tool that could take as long as 45 minutes. And if you tried to do all of this manually, you&#39;d be at it for weeks.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;UI Polish&lt;/b&gt;: A lot of little improvements. There are still rough edges, but we&#39;re making significant progress. As one simple example, things are now put in a sensible order in the tree editor. Moving items among collections works better now too.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Graph Customization&lt;/b&gt;: I saved the best for last. Perhaps you thought the Butterflyzer graph colors and design were hard to read or just plain ugly. Well, now you can customize all of that to your hearts content! Just click on the &quot;Butteflyzer:Preferences&quot; menu item, and navigate to the Visualization page:&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl_O3KALaTGA75do35xcBidMzIcDLRiZ13FeKt8Tn3bR0ytMQUjFyJh83onGC8beXv4Zry7N6yRnCIz0-Ee3x_8G6-hgoTZHCjYnbgHKovKYUWAH0JTpd0ZMMDm8GvnYlAru0iCkcOhCI/s1600/ButterfScreenCustomization.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;311&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl_O3KALaTGA75do35xcBidMzIcDLRiZ13FeKt8Tn3bR0ytMQUjFyJh83onGC8beXv4Zry7N6yRnCIz0-Ee3x_8G6-hgoTZHCjYnbgHKovKYUWAH0JTpd0ZMMDm8GvnYlAru0iCkcOhCI/s320/ButterfScreenCustomization.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;Here are some examples of what you can do:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZT7DByTrtHiYYFtmHHPgN4PfklOEuNhuUpuPHUnPV_JoN1fX47mvUib7vFC1uOgEn5XZ0NAlZ2Wmpv9f34EFVOYA1WcoFH113VZRRM3C-3T5yfKB1ftAvg-VCAR_euKsjv5y9krVx6sw/s1600/TopWriters.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZT7DByTrtHiYYFtmHHPgN4PfklOEuNhuUpuPHUnPV_JoN1fX47mvUib7vFC1uOgEn5XZ0NAlZ2Wmpv9f34EFVOYA1WcoFH113VZRRM3C-3T5yfKB1ftAvg-VCAR_euKsjv5y9krVx6sw/s640/TopWriters.png&quot; width=&quot;800&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJAleqMPLUNOnLPIFemAlFSWFW8XgMgyDoqtRlP3DVkBUzoJCI9BkPilKRMVu4QRY38QF5Ebb7CcqVuDVl9xPM3rMUjedf2TAz44ivM18OiPlYAPoR_W8XOzX_LxwpTwHgEz_ZWuiuJZk/s1600/EgyptButter.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJAleqMPLUNOnLPIFemAlFSWFW8XgMgyDoqtRlP3DVkBUzoJCI9BkPilKRMVu4QRY38QF5Ebb7CcqVuDVl9xPM3rMUjedf2TAz44ivM18OiPlYAPoR_W8XOzX_LxwpTwHgEz_ZWuiuJZk/s640/EgyptButter.png&quot; width=&quot;800&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJAleqMPLUNOnLPIFemAlFSWFW8XgMgyDoqtRlP3DVkBUzoJCI9BkPilKRMVu4QRY38QF5Ebb7CcqVuDVl9xPM3rMUjedf2TAz44ivM18OiPlYAPoR_W8XOzX_LxwpTwHgEz_ZWuiuJZk/s1600/EgyptButter.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
So that&#39;s what&#39;s been happening in Butterflyzer land. If you&#39;re using Butterflyzer, I want to ask one important favor. Please fill out the &lt;a href=&quot;http://www.surveymonkey.com/s/KH5NXD5&quot;&gt;Butterflyzer survey&lt;/a&gt;. I know people are using the software, we have the downloads and site visits to prove it! But we&#39;ve only had a couple of survey responses. Those have already been helpful in identifying key issues. For one thing, it&#39;s convinced me that the number one thing I need to do is to help people understand what makes Butterflyzer more than just a fun tool to play around with. I need to show people how it can be really useful in their day to day work, and that&#39;s what I&#39;m going to be working on next. In the meantime, I&#39;d love to hear from you about what you&#39;re done with Butterflyzer. If you have visualizations or interesting data sets you&#39;ve collected with it send them to me at miles @ [our domain name].&lt;br /&gt;
&lt;br /&gt;
I&#39;m going to drop another plug in here. We&#39;ve gained a lot of experience at this whole social media analysis thing, and I think we have some unique capabilities to offer, including consulting and custom development. In addition to our expertise in Social Network analysis, computational modeling, visualization and artificial reasoning, our colleagues have literally written the books on genetic algorithms and other optimization techniques. If they can&#39;t figure it out, it&#39;s not likely that anyone else can. So if you or someone you know have really challenging problems, and you&#39;d like to get out ahead of what everyone else is doing, please drop me a line at the above address.&lt;br /&gt;
&lt;br /&gt;
And don&#39;t forget the &lt;a href=&quot;http://www.surveymonkey.com/s/KH5NXD5&quot;&gt;survey&lt;/a&gt;..!</description><link>http://milesparker.blogspot.com/2011/05/butterflyzer-alpha-4.html</link><author>noreply@blogger.com (Miles Parker)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl_O3KALaTGA75do35xcBidMzIcDLRiZ13FeKt8Tn3bR0ytMQUjFyJh83onGC8beXv4Zry7N6yRnCIz0-Ee3x_8G6-hgoTZHCjYnbgHKovKYUWAH0JTpd0ZMMDm8GvnYlAru0iCkcOhCI/s72-c/ButterfScreenCustomization.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-6847012331409757491</guid><pubDate>Fri, 06 May 2011 02:03:00 +0000</pubDate><atom:updated>2011-05-07T17:45:10.725-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">amp</category><category domain="http://www.blogger.com/atom/ns#">ascape</category><category domain="http://www.blogger.com/atom/ns#">biomed</category><category domain="http://www.blogger.com/atom/ns#">butterflyzer</category><category domain="http://www.blogger.com/atom/ns#">dharma</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">emf</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">science</category><title>Why Model Reality? Science, Eclipse, Big Data, AI, and what&#39;s missing...</title><description>Last month I gave an extended talk at EclipseCon 2011 about the Eclipse Agent Modeling Platform and the whole idea of Modeling Reality in general. Why would we want to do such a thing? What does it have to do with software development and Eclipse? Well, according to one comment I just received about the talk, not much. My talk was:&lt;br /&gt;
&lt;blockquote&gt;&quot;Too scientific. Just for special people&quot;&lt;/blockquote&gt;I thought that was a very fair and amusing reaction. Many people do come to EclipseCon expecting to find out only about information that they can use to do their day-to-day work and are understandably more interested in practice than theory. I can tell you that when I walked into a room large enough for 80 people and there were &lt;i&gt;maybe&lt;/i&gt; 20 people spread randomly around the room, I felt more than a bit awkward. I do appreciate the EclipseCon program committee giving me the opportunity to talk to people about what might seem to be esoteric topics. And you know what, my talk actually was pretty relevant, given that we had keynotes on Hadoop (Big Data) and Watson (Big AI) and I pretty much spend half of the slides taking swipes at both.&lt;br /&gt;
&lt;br /&gt;
So I was thinking, aren&#39;t there a lot of special people in the world? If you&#39;re intrigued by any of these assertions disguised as questions...&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;What do Egypt, Watson, Teenage Pregnancy, Big Data, Nuclear Reactors and the Eclipse Modeling Framework have to with each other?&lt;/li&gt;
&lt;li&gt;Why is Big Data Big Dumb?&lt;/li&gt;
&lt;li&gt;Why is AI just Smart Dumb?&lt;/li&gt;
&lt;li&gt;What kind of reasoning approach is just as valid as Induction and Deduction?&lt;/li&gt;
&lt;li&gt;What do Tasktop, Butterflyzer and other Eclipse RCP apps have to do with this?&lt;/li&gt;
&lt;li&gt;What does this have to do with Software Development?&lt;/li&gt;
&lt;li&gt;What does this have to do with me?&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
..then watch the video and find if you&#39;re special too!&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width=&quot;960&quot; height=&quot;540&quot; src=&quot;http://www.youtube.com/embed/E8hlogQMyNs?hd=1&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
I&#39;ve left out the demos; I&#39;m going to put them into a separate video. I&#39;ve also left out the architecture slides because you can find them elsewhere and they&#39;re incredibly boring even to me.&lt;br /&gt;
&lt;br /&gt;
[You&#39;ll need to click directly on the blog to see the video.]</description><link>http://milesparker.blogspot.com/2011/05/why-model-reality-science-eclipse-big.html</link><author>noreply@blogger.com (Miles Parker)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/E8hlogQMyNs/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-6842354303862801489</guid><pubDate>Thu, 05 May 2011 21:41:00 +0000</pubDate><atom:updated>2011-05-05T15:04:01.442-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business</category><category domain="http://www.blogger.com/atom/ns#">dharma</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>The Eclipse Community and Victory over Conflict</title><description>I just read Andrew Bayer&#39;s &lt;a href=&quot;http://andrewbayer.blogspot.com/2011/05/more-detailed-thoughts-on-jenkins.html&quot;&gt;really nice post&lt;/a&gt;. I tried to respond there, but naturally I got too verbose. Someone needs to come up with a good solution to this problem of blog posts and comments and half-blog posts half-comments that end up spread all over the place. And make a hundred million dollars on it. (And no, Google Wave wasn&#39;t it.)&lt;br /&gt;
&lt;br /&gt;
Andrew said: &quot;It&#39;s a natural human instinct to want to be the winner when there&#39;s a conflict, but no reunion is going to be possible if one side insists on a PR victory over the other.&quot; That&#39;s really really true. It is always necessary for people to give up ground. But I think that&#39;s what we need to do and I&#39;m going to talk about that in a followup post.&lt;br /&gt;
&lt;br /&gt;
As I mentioned in my &lt;a href=&quot;http://milesparker.blogspot.com/2011/05/hudson-jenkins-and-eclipse.html&quot;&gt;earlier post&lt;/a&gt; on the subject, the thing I really appreciated about Jenkins is the creative way that they found to step outside of the conflict altogether. I mean maybe that wasn&#39;t entirely the intent, but it felt like someone had read The Art of War. Which is just as much about peace in a non-obvious way. I also appreciate what Andrew had to say about sometimes things just going there own way.&lt;br /&gt;
&lt;br /&gt;
But if Andrew and the rest of the Jenkins community are interested in reaching out or engaging in any way, I know that there are many people in the Eclipse community that would be happy, actually eager, to help. I think very few people really want to see this as an us-vs-them thing.&lt;br /&gt;
&lt;br /&gt;
But how to deal with it? I&#39;m going to say something unorthodox. I don&#39;t think you really make things better by talking about them and negotiating and making peace offerings. So often that just makes things worse. People&#39;s positions just get hardened further, and we create more history to overcome and more confusion. We see that in the Middle East and Korea and that is with all kinds of experts helping to &quot;fix&quot; things. And you certainly see that in this case, where people are still arguing about posts that someone made six months ago.&lt;br /&gt;
&lt;br /&gt;
So from what I&#39;ve seen some kind of meeting in the DMZ and coming up with a reconciliation plan often doesn&#39;t work out that well. Instead, I think it works better when people get together in an organic way or just get fed up with the hassle of arguing all of the time. This isn&#39;t a top-down leadership process, it&#39;s totally bottom-up, people talking to people. In this approach, disputes aren&#39;t overcome, they simply become irrelevant. One day you just wake up and think &quot;what the hell was all that about anyway?&quot;&lt;br /&gt;
&lt;br /&gt;
So to get there doesn&#39;t really require Oracle or Jenkins to make some kind of specific gesture. And actually, come to think of it, what&#39;s Oracle? Oracle doesn&#39;t really exist. (And neither does Jenkins for that matter.) It&#39;s just a bunch of people, contracts, equipment and so on that it&#39;s convenient to pretend is a single entity. So let me tell you that the great thing about Eclipse is that it has a sneaky, even subversive, way of separating out people from corporations. (Don&#39;t tell the suits.) It is about building trust in and relationships with other developers. So practically speaking here are some paths that Jenkins could follow. They aren&#39;t mutually exclusive!&lt;br /&gt;
&lt;br /&gt;
1. Continue to build the great community and technology that Jenkins now has.&lt;br /&gt;
&lt;br /&gt;
2. Indicate that you are an &quot;interested party&quot; for the Hudson proposal. Perhaps request that Kohsuke be made a project co-lead. All communications about projects at this stage are supposed to be public. But note that part of the Eclipse Proposal process is a loose mandate to projects to make an effort to bring in lot&#39;s of different efforts. You can&#39;t force that process but if everyone is acting in good faith it could work out nicely. Of course there are lots of reasons that might not work for you.&lt;br /&gt;
&lt;br /&gt;
3. You could make a proposal for a Jenkins project. Again, that may be something you just don&#39;t want to do, for technical, business of political reasons. But creating the proposal isn&#39;t difficult and again plenty of people to help. I&#39;m sue the proposal would be treated equally, and presumably you wouldn&#39;t have to do as much heavy lifting for the IP issues. Of course, you might be encouraged to try to combine projects, perhaps under an overall CI umbrella. I&#39;m just speculating here, not trying to create extra headaches for the foundation.&lt;br /&gt;
&lt;br /&gt;
To some of Andrew&#39;s specific concerns. &quot;since the split to corporate-sponsored work as compared to the more independent developer-driven Jenkins&quot;. Really, the one thing I&#39;d say about Eclipse governance is that it is developer driven. There are some very important caveats about that, but it is really true in the day to day work.&lt;br /&gt;
&lt;br /&gt;
Now to whether Hudson is Java driven or not.. It really doesn&#39;t matter. As project contributors even the project leads can&#39;t tell you *what* to work on. If you&#39;ve made a commitment on something of course it would be assumed that you&#39;d see that through. But it really is a vote with your feet/code thing. If a group of folks wants to work on something the project lead can&#39;t stop them. Worst case the lead could refuse to include it, but they&#39;d have to have a really strong justification for it. A bigger issue is of course when there are conflicting design agendas. I think that that is the thing to thing through carefully. Are there any insurmountable design differences, i.e. that couldn&#39;t be solved by abstraction. The second point is that Eclipse isn&#39;t really as Java driven as you might think. Besides of course supporting all kinds of different languages, there are a number of efforts based on other platforms, notably Orion.&lt;br /&gt;
&lt;br /&gt;
Anyway, some thoughts, hope they are helpful.&lt;br /&gt;
&lt;br /&gt;
I can&#39;t help but speak personally for a minute about my own spiritual tradition and why I&#39;d care about this, seeing as it isn&#39;t something that really affects me directly. As a Buddhist -- whatever that means -- I don&#39;t see conflict as a problem, but as a precious opportunity. It&#39;s not something to avoid or even to try to fix, but a part of the path. Conflict is an opportunity to bring our compassion and mindfulness -- however meager -- from the realm of the theoretical into activity that can actually benefit people. All of us -- and it doesn&#39;t matter what we call our own approach to things -- can benefit from seeing conflict this way. When people disagree with us or cause us harm, our habit is to push back. When we decide not to go with those habits but instead do something completely unexpected -- that&#39;s when we start having fun!&lt;br /&gt;
&lt;br /&gt;
&quot;Victory over Conflict&quot; is another way to say &quot;Victory over War&quot; which is the slogan of the &lt;a href=&quot;http://www.shambhala.org/kasung.php&quot;&gt;Dorje Kasung&lt;/a&gt;. Members of that organization have written an excellent translation of the &lt;a href=&quot;http://www.amazon.ca/Art-War-Translation-Essays-Commentary/dp/1570625522/ref=sr_1_12?s=books&amp;ie=UTF8&amp;qid=1304631347&amp;sr=1-12&quot;&gt;Art of War.&lt;/a&gt;</description><link>http://milesparker.blogspot.com/2011/05/eclipse-community-and-victory-over.html</link><author>noreply@blogger.com (Miles Parker)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-2131625357316200879</guid><pubDate>Wed, 04 May 2011 18:17:00 +0000</pubDate><atom:updated>2011-05-04T11:43:16.315-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">ip</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">politics</category><title>Hudson, Jenkins and Eclipse</title><description>Wow. Am I the only one who is hugely ambivalent about the &lt;a href=&quot;http://mmilinkov.wordpress.com/2011/05/04/hudson-now-at-eclipse/&quot;&gt;Eclipse Hudson&lt;/a&gt; announcement? If William Safire were still with us he would point out here that Ambivalence does &lt;i&gt;not&lt;/i&gt; mean &quot;unsure&quot;, &quot;undecided&quot; or even &quot;conflicted&quot;; rather, it means that one holds two opposing -- often strongly opposing -- views at the same time. I have strong views, but I don&#39;t have a dog in the hunt at all, except that like many of you I rely on Jenkins and Hudson to actually build my software. And as there is big money and big corporate ego involved here, I should probably keep those views to myself. But naturally, I won&#39;t.&lt;br /&gt;
&lt;br /&gt;
While the news isn&#39;t completely surprising -- there were some odd hints here and there -- it still raises a number of interesting and even challenging questions for our community. My guess is that this is in a way a harbinger of deeper changes in the overall role and mission of Eclipse and so I think it is worth talking about all of that openly.&lt;br /&gt;
&lt;br /&gt;
I [Valence +]  am thrilled because this is a huge win for the Eclipse Community. Transparency, good governance, common communication and tool infrastructure -- above all, a &lt;i&gt;trusted&lt;/i&gt; community and process -- that&#39;s what Eclipse has to offer to open source projects everywhere. The fact that Oracle has chosen Eclipse as in effect the trusted repository for all of their CI related IP, community, branding and other assets speaks really well of Mike and the community as a whole. Basically, Oracle fucked up big time. Now they&#39;re making an attempt to do the right thing. Does it matter why, as long as everyone knows the emperor isn&#39;t actually wearing any clothes? And it is also yet more evidence that companies are going to be forced to move to a truly shared open governance model. The days when companies could get away with open sourcing in name only are numbered. All of this is great news for the open source movement. Oh, and speaking as an Eclipse project lead, the prospect of having an Eclipse project &lt;i&gt;devoted&lt;/i&gt; to builds and integration makes me happy indeed.&lt;br /&gt;
&lt;br /&gt;
I [valence -] am worried because it feels like a big loss for the Eclipse Community. The Jenkins / Hudson split was probably the most dramatic open source news of the year, and personally I loved every minute of it. If the Hudson move to Eclipse demonstrates the power of open source, Jenkins embodies its spirit. The name change was spectacular judo and -- to mix martial arts -- better than watching Kung Fu Panda. Deeper still, the name change puts out a real challenge to the corporate mindset, one that hasn&#39;t been really appreciated. That&#39;s for another post, but I believe the next big wave for open source is the triumph of community over branding, and substance over labels. Now, to me the deepest Eclipse principle is that actual contributors lead the project. If you didn&#39;t write the code, you don&#39;t get to make the decisions, unless you&#39;re actually my boss. Fundamentally, the Jenkins folks left Hudson because Oracle was violating that principle. I&#39;m also concerned because the Hudson proposal puts all of us -- including independent committers like me -- in the uncomfortable position of being on a &quot;side&quot; of a battle that we didn&#39;t choose. And we wouldn&#39;t even be talking about this if the Jenkins folks -- i.e. the people who actually wrote most of the code -- hadn&#39;t had the courage of their convictions.&lt;br /&gt;
&lt;br /&gt;
There is the smaller issue of how Hudson fits in to the Eclipse project ecosystem. Every other project that I can think of has some connection to the same basic OSGi architecture. Is this the beginning of a redefinition of what Eclipse itself is? I think Orion is pointing that way as well, and I don&#39;t think that that is necessarily a bad thing, but it is worth discussing.&lt;br /&gt;
&lt;br /&gt;
So where does this leave us? I don&#39;t know. Even if I fell down on the [Valence -] side more, I still wouldn&#39;t actually oppose the Eclipse project, and it wouldn&#39;t matter a bit if I did. Ultimately projects need to sink or swim on their own merits, and the fact that Hudson will be subject to the same rules as everyone else makes me feel ok about that. But the process should not be pro forma either and should genuinely involve the whole community, especially the Jenkins folks if they chose to get involved. For me the best outcome would be for the Jenkins team to be invited in as co-equals. I wouldn&#39;t be a bit ambivalent about that.</description><link>http://milesparker.blogspot.com/2011/05/hudson-jenkins-and-eclipse.html</link><author>noreply@blogger.com (Miles Parker)</author><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-6793814054672960461</guid><pubDate>Tue, 03 May 2011 19:19:00 +0000</pubDate><atom:updated>2011-05-03T14:47:04.811-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business</category><category domain="http://www.blogger.com/atom/ns#">butterflyzer</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">graphics</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">science</category><category domain="http://www.blogger.com/atom/ns#">xpand</category><title>Meet Butterflyzer Part II: What does it do and do you care?</title><description>Well.. glad you asked. I think. In my &lt;a href=&quot;http://milesparker.blogspot.com/2011/04/meet-butterflyzer-part-i-is-this-any.html&quot;&gt;last post&lt;/a&gt; I shared what motivated me to create Butterflyzer. In this post I wanted to talk about why you might want to give it a closer look. What &lt;i&gt;does&lt;/i&gt; this thing do anyway?&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;So, you want an Elevator Speech?&lt;/h3&gt;&lt;br /&gt;
&lt;div align=&quot;right&quot;&gt;&lt;small&gt;Elevator Photo © jplpagan CC BY-SA 2.0&lt;/small&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWlTaGI-dADBIDSomm_aVTHeBD0Xc2CWkItuo0WFjFYx7YXvYbkbZ1YQVPTQ7cpxtuN4im3H8VzMIluy3tHdfuJP4uay9Jo-EbTTbQxV32WruYOgF2DdzeCxwwRhc7WmFoj2w4uhuKdNk/s1600/ElevatorMusic.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:right; float:right; margin-left:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; width=&quot;249&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWlTaGI-dADBIDSomm_aVTHeBD0Xc2CWkItuo0WFjFYx7YXvYbkbZ1YQVPTQ7cpxtuN4im3H8VzMIluy3tHdfuJP4uay9Jo-EbTTbQxV32WruYOgF2DdzeCxwwRhc7WmFoj2w4uhuKdNk/s400/ElevatorMusic.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;First I have to take one of my patented (ahem) detours into contrariness. There is a lot of conventional wisdom out there about how a product should be developed, marketed and, most importantly, capitalized. (I was thinking about &quot;butterflyzer&quot;, but the lower case thing has been done to death.)&lt;br /&gt;
&lt;br /&gt;
The &quot;elevator speech&quot; is a deeply ingrained part of Silicon Valley mythology. Here&#39;s the idea: You&#39;re riding a random elevator somewhere off the 101, and you happen to notice that standing right next to you is a Kleiner Perkins VP and he or she happens to be not quite on his or her iPhone. So you whip out that succinct but compelling paragraph that you&#39;ve been fine-tuning and rehearsing for months. Two hours later you&#39;re sitting around a solid mahogany conference table with a bunch of your closest new friends, Montblanc in hand. Come on, we&#39;ve all had that dream at some time or other. The one that turns into a nightmare when you discover that you&#39;re that one guy in &lt;i&gt;The Social Network&lt;/i&gt; who apparently didn&#39;t bother to &lt;b&gt;actually &lt;i&gt;read&lt;/i&gt; the shareholder agreement&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
It&#39;s true that good ideas are often easy to explain.&amp;nbsp;But is the inverse always true? As an exercise, try coming up with a elevator speech convincing someone to invest in VisiCalc before anyone had ever seen a spreadsheet. Or a web browser in the mid-eighties. I&#39;m not saying that it can&#39;t be done (probably a B-school exercise, come to think of it) but it&#39;s going to lose a lot in the condensing and the part that isn&#39;t going to come out is the overall deeper vision -- the thing that makes an iPod not just another MP3 player. I&#39;m not that observant a guy, but one thing I&#39;ve noticed about Silicon Valley is that a lot of the buildings there are only two or three stories high. Now, look at all of the innovations over the last ten years or so compared to the innovations in the previous ten or the ten before that. Is it any coincidence that these innovations have become progressively more feeble, more one-dimensional? They make a lot of money and everyone talks about them, but Facebook? Really? The whole thing makes me think of pop music. Does it have a snappy hook? Anyway, as you&#39;ve probably figured out by now, the previous two paragraphs were just a cheap excuse for why I don&#39;t have a decent elevator speech. But I&#39;ll give you my bad one, since you (didn&#39;t) ask...&lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;&lt;br /&gt;
&quot;[bing] Um, ok, so it&#39;s an application that... Well no, it&#39;s not web based, actually, although we can make one of those, it just won&#39;t be as fully featured, but the product really benefits from a rich client experience...anyway, like I was saying it&#39;s integrated with a web browser...yes, yes, I know that there are already a few companies -- yes, like Apple and Microsoft -- making web browsers and right, yeah, they give them away for free, but [bing] that&#39;s not relevant, here&#39;s the cool part.. Oh, it is? OK, nice talk.. [footsteps recede, doors close] ..ok, bye. [under breath] Nice Porsche, [bleep].&quot;&lt;/i&gt;&lt;/blockquote&gt;The good news is that the last thing I want is traditional venture capital. Yuck. But that doesn&#39;t mean that I don&#39;t want to talk with people that have management expertise, money or other important stuff to contribute. I just want to be sure that folks understand that vision is something to share, not to negotiate.&lt;br /&gt;
&lt;br /&gt;
Oh hey, I just glanced over at the right-hand column there. Maybe that&#39;s useful.&lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;&lt;br /&gt;
&quot;Butterflyzer™: a revolutionary tool for researching, analyzing and visualizing social media.&quot;&lt;/i&gt;&lt;/blockquote&gt;Sounds cool -- if a touch hyperbolic -- but it doesn&#39;t help much, does it? So how about a long-form elevator speech? Think Petronas Towers and then the power goes out. And you forgot to charge your iPhone.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Butterflyzer Features&lt;/h3&gt;&lt;br /&gt;
Here&#39;s the manifesto, i.e. &lt;b&gt;the part you should have skipped ahead to if you were looking for so-called &quot;content&quot;&lt;/b&gt;. The idea behind Butterflyzer is to provide an integrated set of tools that lets you: &lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Do all of the things that you currently do on the web, but in a much more organized way. And it&#39;s fun!&lt;/li&gt;
&lt;li&gt;Do a bunch of things that ordinarily you would need to hire or become a web analyst to accomplish. Javscript, JSON, REST, SOA, etc..&lt;/li&gt;
&lt;li&gt;Navigate and comprehend connections in the web in natural but completely new ways.&lt;/li&gt;
&lt;li&gt;Analyze those connections using powerful tools and techniques previously only available in much higher-end tools, if at all.&lt;/li&gt;
&lt;li&gt;Easily share the results of your explorations with others.&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
And all of that functionality should probably cost you around $100. Of course, there will be the inevitable Enterprise editions, etc.. but all of the cool stuff will be in the base version. We&#39;ve got two main slogans that capture what is really unique about Butterflyzer:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;Think outside of the Browser.™&lt;/b&gt; If we step back in time a bit, browsers really haven&#39;t come that far since Mosaic. That&#39;s because they&#39;re stuck thinking about better ways to present single web pages. I can&#39;t reveal everything that supports this, but a lot of the magic is in the current Alpha version. The basic thrust is to think about social media browsing as a holistic, shared experience.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;See the web as it was meant to be seen.™&lt;/b&gt; Hey, it&#39;s a web, right? As in a network or a graph? Aren&#39;t there tools for doing that sort of thing? Well yeah, there are, and while it seems like a neat thing to do, there haven&#39;t been any mainstream tools that do it all that well. Why? Is it because most people simply can&#39;t handle the idea of a graph? I don&#39;t think so. Sparse graphs like we see in business process diagrams are easy. But it&#39;s actually quite difficult to make visual tools that fluidly, naturally and automatically support interaction with large interconnected graphs. I think we&#39;ve made a lot of progress in this area -- in turn based on a lot of great work by other people in the Eclipse community -- and there is a lot more potential to exploit.&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
Let&#39;s get a little deeper into how this is done. There are many aspects to how the tool provides all of this. We could think of this as a sort of web surfing life-cycle but that&#39;s really just techno-babble, and the way you&#39;ll actually work with Butterflyzer isn&#39;t this linear.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: right; text-align: center;&quot;&gt;&lt;a href=&quot;http://butterflyzer.com/images/ScreenshotWeb.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float: right; margin-left:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh99RfYIGjgVEMwf6hh7bWDMbA92mEhQYK4zwrqMXrkMvZ8J5eOOd7lSIzYcgWbbBZjUOXB-0vffKXQNaXkEkovhVmFG0IqpOHy75gmzQzJquGQzMSwbMNJOEJYNAP05vAaSQOrTQQ8cm4/s400/ScreenshotWebSmall.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h4&gt;Browse&lt;/h4&gt;You surf using the integrated browser. While Alpha users will notice that the usability isn&#39;t quite up to the level of current commercial browsers, we&#39;ll get there easily. The browser itself uses the same web engine as the one you&#39;re using now -- in fact you can even pick the engine you want to use. So everything renders quickly and looks as nice as in your standard browser. (It&#39;s also very easy to import the things that you find using Butterflyzer back into your desktop browser.)&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Search and Collect&lt;/h4&gt;While you&#39;re browsing, pages are collected seamlessly in a number of different ways. For example, you can click a button to collect pages and links from sites you visit. (We can also do this automatically but that might be overwhelming.) Most importantly, in addition to the page information itself, you get all of the other information that you get with searches as described below.&lt;br /&gt;
&lt;br /&gt;
Right now, when you do an internet search the information is provided to you from one service in a way peculiar to the service you&#39;re using. You can&#39;t really get information from multiple places, least of all when the information represents completely different kinds of information. Here&#39;s what you get when you do a single Butterflyzer search using the current default settings, with more to come:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_lqRCxaar_WkmsX6BCLy4Mu7ScdJ2r7xE5FDGXxW75cKSSg-p7rUv1RvoFuwgwCMIVm8DCnr2mmHKNveGdkiu0UbvWynALmkmy8MuYLH5S5rPxAI3XwQmiDlJ9dtaeNwLfj4WbFu1w0s/s1600/ButterflyzerSearch.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; margin-left:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;50&quot; width=&quot;339&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_lqRCxaar_WkmsX6BCLy4Mu7ScdJ2r7xE5FDGXxW75cKSSg-p7rUv1RvoFuwgwCMIVm8DCnr2mmHKNveGdkiu0UbvWynALmkmy8MuYLH5S5rPxAI3XwQmiDlJ9dtaeNwLfj4WbFu1w0s/s400/ButterflyzerSearch.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Google Web Searches&lt;/b&gt; You know them, you love them.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Topsy Searches&lt;/b&gt; Topsy provides current pages &lt;i&gt;and tweets&lt;/i&gt; that reflect what people are currently interested in.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Topsy Analytics&lt;/b&gt; All results are tagged with Topsy rankings and other information so you know what other people are finding valuable.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Live Tweets&lt;/b&gt; What are people saying about the topic &lt;i&gt;now&lt;/i&gt;?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Content Authors&lt;/b&gt; Who is saying it?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Yahoo Placemaker&lt;/b&gt; Geo-location for pages and tweets where appropriate.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;OpenCalais&lt;/b&gt; Semantic tagging for all of this, so you can quickly identify which information you&#39;re actually interested in.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Twitter Users&lt;/b&gt; This is all integrated with a deep set of features for Twitter Author and Tweet exploration.&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;h4&gt;Catalog&lt;/h4&gt;It is easy to collect a lot of information from the web, but what do you do with it? Think about how clumsy the process of simply creating and managing bookmarks is using conventional browsers. Butterflyzer also allows you to organize items in a tree, but these aren&#39;t simple bookmark hierarchies -- they&#39;re live connections to the data we&#39;ve collected above and they can be organized in much more sophisticated and dynamic ways. But the really cool thing is that thanks to OpenCalais, cataloging is done automatically for you! As a really simple example, when you search for a page on Obama, you&#39;ll get an entry &quot;President Obama&quot; under &quot;People&quot;, &quot;White House&quot; under &quot;Organization&quot;, etc.. You might then create a &quot;Politics&quot; collection, perhaps as part of a &quot;Interests&quot; collection, and so on.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://butterflyzer.com/images/ScreenshotSources.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:right; float:right; margin-left:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;154&quot; width=&quot;205&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUlSVWlvvJBm8jsVzxV5Ok9hVSllLlNV9xoZKcU43ZqS6AGDf-277sN3LM-fmdSbniCyhiQVX3PxezxYTD0TaMeGaQJOEVBCuvnaWy4pCgnoUdu1PGCiwabcV69gvW0qobTIBuXPX6GOQ/s400/ScreenshotSourcesSmall.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;And as anyone who has ever &quot;collected&quot; old magazines knows, it&#39;s a lot harder knowing what to throw away than knowing what to keep. Butterflyzer provides powerful but easy to use tools for rapidly pruning away all of the dross and clutter. When you delete any of your pages, they&#39;re automatically removed from every collection. (Seems simple, but bookmarks don&#39;t work that way!) You can create boolean categories for your collections that allow you to easily combine and restrict member pages.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Curate&lt;/h4&gt;Cataloging naturally leads into curation. You have the information that you want, but do you know what it contains and why it might be important? A lot of the curation process can be accomplished simply through working with collections, but in addition to current support for keeping track of things we&#39;re building in rich meta-data features. Most significantly, we&#39;re working on support for page-scraping and other techniques to collect this meta-data automatically.&lt;br /&gt;
&lt;br /&gt;
One of most important aspect of curation is integration of various data sources, and this is a key Butterflyzer advantage. As we described above, when you search and collect pages, you&#39;re actually getting information from a number of (properly credited, naturally) services and it is all seamlessly weaved together. For example, when you look at a web page, you can quickly navigate to all of the related tweets. Of course, you can get all of this information from various web tools, but think of how much time you spend just moving from one search page to another. &lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Navigate&lt;/h4&gt;Now we get to the fun part. How many tabs do you have open in your browser right now? (For some reason, I can&#39;t stand the things, but a lot of people use them.) How do you find things that you&#39;re looking for? When you think you&#39;re done with something you close the window. Then you have to go and do that Google search again. Or did you find it in Topsy? And once you&#39;re done all of the work you close out of your browser and it&#39;s gone. Unless you can find it buried in your browser history... somewhere.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://butterflyzer.com/images/ScreenshotGraph2.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:right; float:right; margin-left:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;154&quot; width=&quot;205&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2KLY6FO3r2Bg8dA4LpZoY_fDW94RGkJd4h7ECPZTsPkaUQbR5NJ5M3t2Bn4py8j5uBlb6LjcjrbOT43Pf-h5qVPk0LnjoedZKI3sf3vYJf1gBoUJ6x6N_lGLLfEYBK6gyq-bDbg0rxxg/s400/ScreenshotGraph2Small.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;How can we make the navigation process more comprehensive, manageable and timely? Well, we need to exploit all of the information we&#39;ve been able to collect above and incorporate it back into the browsing experience. And then we need to present it to you in a way that you can see what you&#39;re looking for and everything it is related to at a glance. That&#39;s what the Butterflyzer graph tools provide. But the graph tools are much more than a way to find the information you&#39;ve already collected..&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Explore&lt;/h4&gt;The graph tools allow you to get a sense for the bigger picture. How are all of the things that you&#39;ve been looking at related? What kind of information is on this webpage that isn&#39;t available on that one? Who&#39;s got something to say about this, and how are they related to other people? It would be nice to be able to see this information without visiting each individual page, wouldn&#39;t it?&lt;br /&gt;
&lt;br /&gt;
But Butterflyzer&#39;s deeper agenda is to find stuff you &lt;i&gt;weren&#39;t&lt;/i&gt; looking for but that you&#39;re really glad you found. If Butterflyzer can do that well, then we&#39;ll have accomplished what we&#39;ve set out to do. After all, you probably can find everything you need using Google. It might take time, and you might have to dig through a bunch of irrelevant stuff, but you&#39;ll find it eventually.&lt;br /&gt;
&lt;br /&gt;
What you won&#39;t be able to see from the search results is the deeply embedded information linked to your local information context. That&#39;s because Google doesn&#39;t really know much about your local context -- beside what it is presumably inferring from your previous searches. And sorry, but generic semantic web tools really aren&#39;t going to get you what everyone thinks they will, for all of the reasons that I discussed in the last post. But because Butterflyzer does know -- not in a sneaky way, but because you&#39;ve actually told it -- is what &lt;i&gt;you&#39;re&lt;/i&gt; interested in right now and what you were interested in a while ago within the same context. This sort of seamless local contextualization is the key to what we might call the &quot;Butterflyzer Effect&quot; (sorry) and it is simply not possible without close integration with the browser itself.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://butterflyzer.com/images/Screenshots/TimeplotJenkinsClip.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:right; float:right; margin-left:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;277&quot; width=&quot;393&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPF27qCG9qExsy3OSTvTZn-FGvEy43aVqXZj2i0YW4iwJmjBSIDDwT8lxJ3bfD6lde2D7bMmqQqyeGTtd6ApALRkwN27gkgZwtLLgyBLeZtxsmrBtBYbyUd1SURkwVwsFvDyZiOjhkqeM/s400/TimeplotJenkinsClipSmall.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h4&gt;Analyze&lt;/h4&gt;Now, we want to get deeper into what we&#39;ve collected, curated and explored. We want to understand how things are related in a more rigorous, reportable way. We can do that with the graph analysis tools and we&#39;ll be developing this capability in a lot of novel ways. But what you can do now is already quite powerful.&lt;br /&gt;
&lt;br /&gt;
For example, let&#39;s say that you are an Oracle executive and you want to find out how recent changes in OpenJDK are being received. You could do a search through google reading through random sites and then do a Twitter search to see who is talking about what. Or, you could use Butterflyzer to do things in a much more systematic way. You could search for other companies and see how their OpenJDK related news is being received. And you can correlate all of this information.&lt;br /&gt;
&lt;br /&gt;
You can easily collect and integrate charts on interest in various subjects (something that search providers seem to deliberately make difficult). And -- this is a really industrial strength feature -- you can then integrate them with tweets, news items and other sources to create a single timeline for events and interests.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://butterflyzer.com/images/Screenshots/TimelineClip.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:right; float:right; margin-left:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUTF0BIQHd7Vgqe5Ywy5WuGu08hmhHW2Fxcmlo96tX44GR709KrktScrtYeNNZWBMeFcT8QQBdkib-gvOm5007CA6zkCRlptJGMFNDyEakKqz0rbswkQ1VjvNEeOef5l3v3F1n_p-lZ_M/s400/TimelineClip.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h4&gt;Share&lt;/h4&gt;Now that you&#39;ve collected, curated, explored and analyzed this information, what else can you do with it? Whatever you want. Buterflyzer information isn&#39;t kept on someone else&#39;s server somewhere. Of course, your usage is governed by the terms of service from the original provider, but we don&#39;t tell you what you can do with it. Instead, we help you to share it with the rest of the World Wide Web.&lt;br /&gt;
&lt;br /&gt;
All Butterfyzer data is stored using OMG standards based technology (EMF) that allows us to swap out the back-end, which will allow us to create future versions to support all sorts of storage and communication approaches, including all of the common RDBMs systems, fully collaborative multi-user environments, and even really advanced stuff like MongoDB and High Replication Datastore. (If you don&#39;t have any idea what I&#39;m talking about, this is all just internal plumbing.) Currently we support two file storage methods; an easily parsed XML and a highly efficient binary format. Butterflyzer files can be emailed or shared on servers. (You could even use a tool like git to keep track of shared versions.) Butterflyzer information can be exported to bookmarks files and we&#39;ll be developing export features for many other common formats.&lt;br /&gt;
&lt;br /&gt;
But perhaps the neatest thing that you can do with Butterflyzer is to create web documents that you can then provide to others. With a couple of mouse clicks you can build faceted search pages with tables and indexes, interactive timelines and even interactive charts with annotated web links. All of these are based on open web tools and can be shared without any restriction. It&#39;s your data, right?&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;What next?&lt;/h3&gt;&lt;br /&gt;
This part is up to you. We&#39;re taking a novel approach to measuring interest in and potential for our product. If you like any of what you hear, and you want to see Butterflyzer development continue, then you need to let us know. Getting involved in the growing Butterflyzer user community is simple. Download &lt;a href=&quot;http://butterflyzer.com&quot;&gt;the free alpha&lt;/a&gt; and follow us on Twitter.&lt;br /&gt;
&lt;br /&gt;
One other note for the business and media sides of the technology house. We&#39;d love to think we can bootstrap the entire thing so that we&#39;ll have the freedom to innovate in exactly the way we want to. But that may not be realistic or even desirable. Satire aside, capital and, just as importantly, an experienced management team are a critical part of the picture. Perhaps you have resources or executive experience that might multiply our potential, and if what I&#39;ve said so far makes sense to you, let&#39;s talk! And if you&#39;re a media person, market analyst or blogger, I&#39;d love to hear from you too. I think we have an interesting story to tell.</description><link>http://milesparker.blogspot.com/2011/05/meet-butterflyzer-part-ii-what-does-it.html</link><author>noreply@blogger.com (Miles Parker)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWlTaGI-dADBIDSomm_aVTHeBD0Xc2CWkItuo0WFjFYx7YXvYbkbZ1YQVPTQ7cpxtuN4im3H8VzMIluy3tHdfuJP4uay9Jo-EbTTbQxV32WruYOgF2DdzeCxwwRhc7WmFoj2w4uhuKdNk/s72-c/ElevatorMusic.png" height="72" width="72"/><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-917650265649634804</guid><pubDate>Wed, 20 Apr 2011 00:10:00 +0000</pubDate><atom:updated>2011-05-06T10:02:37.684-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business</category><category domain="http://www.blogger.com/atom/ns#">butterflyzer</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">science</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>Meet Butterflyzer Part I: Is this any way to develop a product?</title><description>It&#39;s been a while since I posted and I&#39;ve got quite a backlog of things I&#39;d like to write about.. EclipseCon 2011, Agent Modeling Platform improvements, my mixed feelings about Big Data and AI, and so on. But what I&#39;ve really been excited about recently is the progress being made on a completely different piece of software, and I&#39;d like to share it with you. It&#39;s called &quot;Butterflyzer&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDwuc3kG7m2Gha8ZrwV59UKsy5HSWO3GbT_XlBr6nHIJ8KVd5_Q9aSnDYK7AUNg-D_Dp6i7oEQxxw8yX0bgD0OEbJyPpRO_CYjEwW3JgljNxa2bS7WKtBlEJ-F9i7qnLSPYodw1CCU75A/s1600/ScreenWebShadow.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDwuc3kG7m2Gha8ZrwV59UKsy5HSWO3GbT_XlBr6nHIJ8KVd5_Q9aSnDYK7AUNg-D_Dp6i7oEQxxw8yX0bgD0OEbJyPpRO_CYjEwW3JgljNxa2bS7WKtBlEJ-F9i7qnLSPYodw1CCU75A/s1600/ScreenWebShadow.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
As a bit of background, while I haven&#39;t blogged much about this, I&#39;ve done a good deal of work in two different fields outside of my general focus on creating artificial models of real world complex systems. Along the way, I&#39;ve invested a lot of time in learning how to leverage various Eclipse-based technologies to do the things that I really want to do. (For those who aren&#39;t involved in software development, Eclipse is the leading Open Source development environment and a growing platform for general purpose application development.)&amp;nbsp;All of this has led me to a set of somewhat contrarian and untested views. So I thought.. hey, if not many other people share these ideas, they either a) not very good ideas, or b) an opportunity. As usual, I&#39;ve saved time by simply guessing b) and then spent an obsessive amount of time and energy in creating an application that attempts to support that guess. Here is my experience, for what it&#39;s worth.&lt;br /&gt;
&lt;br /&gt;
1) I spent a few years doing fascinating research on fine-grained agents for reasoning. I&#39;d been aware of the&amp;nbsp;theoretical limitations of AI, but that work exposed me to the real-world limitations of&amp;nbsp;knowledge&amp;nbsp;representation and machine reasoning. That experience has left me deeply skeptical about the sound and fury surrounding efforts like IBM&#39;s Watson, Wolfram Alpha and Hadoop. I&#39;m not questioning that what they offer is valuable and interesting, but I do wonder about how they&#39;re being presented and understood, especially by the broader public. There are important -- even profound -- issues that are simply being glossed over. As I say, that&#39;s a subject for another post. But what that work did convince me of was the value of light-weight, &quot;human-in-the-loop&quot; approaches to using machines to support reasoning. I came away from it with the feeling that we should let computers do what computers do well -- sift through lots of data discovering patterns that fit existing templates, and let people do what they do best -- invent new templates. My guiding passion is to develop tools that harness the power of the computer to enable people to think more deeply and openly about our world, to share that information, and to make wiser choices. While the evergreen challenge for AI seems to be creating software that comes up with good answers to hard questions, I&#39;m more challenged by the idea of creating software that comes up with good questions that have no answers.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyr7ZBB-K_YiTfpQYQRH4NRCDezK4uSuDfdmkCMolySw4aS4gU9cJbMSEaWJFtDld9aMDc4WbMQy1OOvLNhGIhVMQB_H3dc_oFFZgbBAB9gC0XtGLoWr-HXoN_VfOde5iMBBymaRSQGic/s1600/TimelineExhibitShadow.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyr7ZBB-K_YiTfpQYQRH4NRCDezK4uSuDfdmkCMolySw4aS4gU9cJbMSEaWJFtDld9aMDc4WbMQy1OOvLNhGIhVMQB_H3dc_oFFZgbBAB9gC0XtGLoWr-HXoN_VfOde5iMBBymaRSQGic/s1600/TimelineExhibitShadow.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
2)&amp;nbsp;More recently,&amp;nbsp;I&#39;ve somewhat accidentally spent a lot of time on Social Media research. Again, that work has led me to the conclusion that most of the efforts at Internet research have been too focussed on simple answers to frankly pretty lame questions. &quot;How can I increase my click-through rate?&quot; (Gee, I dunno, say something actually useful or at least interesting?) &quot;What&#39;s the best day to post on Twitter to get maximum RTs?&quot; (Hmm.. I guess &quot;interesting&quot; isn&#39;t really an important metric, judging from Twitter trending topics.) That might sound hyper-critical or even arrogant. Don&#39;t get me wrong, there are&amp;nbsp;a lot of really cool efforts out there. But most of them are self-funded or academic exercises. I&#39;m talking about where the &lt;i&gt;money&lt;/i&gt; is, and as usual, that&#39;s in telling the cleanest story you can to investors. For that you need a metric and -- since that metric usually can&#39;t be money, since there often isn&#39;t any -- it has to be some other single dimension, like, yep, click-through rates and retweet counts. Now, I don&#39;t know about you, but I can&#39;t think of anything more trite and less worthwhile than trying to optimize that kind of stuff. So at base my motivation isn&#39;t arrogance, it&#39;s frustration -- we have all of these amazing technologies, and we can do so much better.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFlDiZDH_l49LKTQRsiLwO2KmlzUWYkACVE0Mf4M6BjIM9r0KT4Qfli-FzsuI9j29tKciogGpV55U-aH2P8lUyaIoKipofIg63bJHMnqG4wchM3mFRHh9tpug2iPPdv7ET9ttpbFwgSW4/s1600/TimeplotShadow.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFlDiZDH_l49LKTQRsiLwO2KmlzUWYkACVE0Mf4M6BjIM9r0KT4Qfli-FzsuI9j29tKciogGpV55U-aH2P8lUyaIoKipofIg63bJHMnqG4wchM3mFRHh9tpug2iPPdv7ET9ttpbFwgSW4/s1600/TimeplotShadow.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) I&#39;ve spent a lot of time developing desktop applications and working with other people that do the same thing. Since we have a good hammer (tools for building &quot;rich&quot; clients, aka applications) I&#39;m certain that that it&#39;s the right tool to use. But pretty much the rest of the world is convinced that screw-drivers (&quot;thin&quot; clients, aka web pages and services) are the way to go. Everyone is moving to web-based, software as service applications. OK, they&#39;ve long since moved there, and are now moving on to the cloud. Really, rich clients weren&#39;t even cool in 1998. Granted, some applications still demand the kind of high-performance, deep UI experience, and low-latency that you can only get from a desktop app. But just about the last thing that it makes sense to use a desktop application for is web analysis. Who&#39;d be dumb enough to do that?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwnHWKS3ghLK4gpr4sPJ5oTyXhB_Zg2-kz1qBuIdyFBqFerSxJeFXIzMKoHMYmxEkTbk52Nt0KvjfSmxEb1h-dQhKBKGCULrpuRia5Mq2hdQBhYCWCnv99cRkoPiJDsjq5Ky2b-BhBs80/s1600/TimelineGraphShadow.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwnHWKS3ghLK4gpr4sPJ5oTyXhB_Zg2-kz1qBuIdyFBqFerSxJeFXIzMKoHMYmxEkTbk52Nt0KvjfSmxEb1h-dQhKBKGCULrpuRia5Mq2hdQBhYCWCnv99cRkoPiJDsjq5Ky2b-BhBs80/s1600/TimelineGraphShadow.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, to cut to the chase, there are a lot of tools out there that:&lt;br /&gt;
&lt;br /&gt;
1) Analyze massive biga-bytes of data and come up with answers to questions that no one ever thought of asking before. As Mike Olson, the CEO of Cloudera, one of the big players in the field, said &quot;The light goes on.. Ah! I&#39;m going to use a 1000 servers, because I can&quot;. Which means that people don&#39;t end up asking this critical meta-question: &quot;is this question&amp;nbsp;&lt;i&gt;worth&lt;/i&gt; asking?&quot; Still, given the number of questions being asked, it&#39;s inevitable that some small subset of questions are worthwhile. Undoubtedly, some of the information that Big Data provides us with is really useful.&lt;br /&gt;
&lt;br /&gt;
2) Take that information and present it to end-users in a succinct, &quot;actionable&quot; way. I&#39;ve spent a lot of time analyzing the sort of data that everyone else seems to be analyzing, and what I discovered was that, um... it was surprisingly hard to say anything interesting about any of it. That&#39;s my fault. As anyone who has bought breakfast cereal or red wine can tell you, packaging beats content every day, and I&#39;m lousy at packaging. For example, I studied the events in the Middle East using the same kind of data that Sysomos reported on in this &lt;a href=&quot;http://blog.sysomos.com/2011/01/31/egyptian-crisis-twitte/&quot;&gt;blog&lt;/a&gt;. Cool, huh? Now, this is how I reported the same data to my colleagues and clients: a) We don&#39;t really know where any of the Tweets are coming from, b) There were more tweets after something happened then before anything happened, and c) People used terms like &quot;people&quot;, &quot;time&quot;, and &quot;RT&quot;*, all of which implies that d) we&#39;ve been wasting money and time on this and we should change our approach. That just doesn&#39;t come off as well. I should have made more charts and graphs. I don&#39;t mean that in a totally cynical way. To me, interesting means &quot;surprising&quot; and &quot;novel&quot;, but I&#39;m happy with a definition that includes &quot;pretty&quot; and &quot;compelling&quot;. Visualization allows us to really get our minds around information, but that information needs to be meaningful in the first place.&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;3) Provide all of that data packaged as SaaS (web-based) analysis tools. These are described with words designed to make CIOs feel savvy when dropping wads of cash on said tools. &quot;Business Intelligence&quot; is a must. (Because oddly enough, no-one wants &quot;Business Stupidity&quot; tools.) &quot;Integrated&quot; and &quot;Solutions&quot; are always good filler. &quot;Continuous&quot;, &quot;Cloud&quot;, etc.. are still pretty hip. &quot;Big Data&quot; is &lt;i&gt;totally&lt;/i&gt; hip. Hey, what we really need is a Business Intelligence System for Automated Monitoring and Assimilation of Massive Industry Buzzwords. We could integrate that with our CMS and then attach that to our CRM for real-time customer sales feedback, and then... But I&#39;m sure someone is already in this &quot;space&quot;. OK, getting off into critique for the sheer joy of it, and that&#39;s not very helpful. But let me just point out that the one thing that you &lt;i&gt;don&#39;t&lt;/i&gt; see on any of these websites is how much the product actually &lt;i&gt;costs&lt;/i&gt;. Hey, if you have to ask, right? And look, these aren&#39;t products, they&#39;re services, ok, so why don&#39;t you just let us send you a bill in a couple of months? As I write this, that kind of approach is sounding pretty damn smart...&lt;br /&gt;
&lt;br /&gt;
Snotty criticism aside, you can&#39;t argue with success. And people have done some really ground-breaking and impressive work along the way. It&#39;s certainly not as if the limitations of these technologies aren&#39;t well known to the people actually working on them, and if other people are willing to spend money on technology they don&#39;t understand, then that&#39;s fine. Full employment for software developers, computer scientists and mathematicians is a good thing, probably. Keeps us off the streets.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;But the thing is, I don&#39;t want to create tools for CIO budgets, I want to create tools that people will actually use, be delighted with and do interesting, unexpected things with.&amp;nbsp;And (as demonstrated in the screenshots above) easily share their discoveries with others without having to pay a tax on the results.&amp;nbsp;This requires software that 1) doesn&#39;t need unlimited infrastructure and data sets, 2) takes an open-ended, exploratory approach 3) has a responsive, engaging UI, and that you can download, install and use on your own computer for whatever and however long you want to. And it probably needs to cost less than a hundred bucks. I think it&#39;s worth trying. The attempt is called Butterflyzer.&lt;br /&gt;
&lt;br /&gt;
You can download the free Butterflyzer Alpha and see more screenshots and screencasts&amp;nbsp;at &lt;a href=&quot;http://butterflyzer.com/&quot;&gt;http://butterflyzer.com&lt;/a&gt;. (Psst.., the first 50 people who follow us will get 50% off the retail price when and if we release a commercial product.) I&#39;d love to hear what you think!&lt;br /&gt;
&lt;br /&gt;
To find out what Butterflyzer actually does, check out &lt;a href=&quot;http://milesparker.blogspot.com/2011/05/meet-butterflyzer-part-ii-what-does-it.html&quot;&gt;Part II&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
*Actually, there are some interesting things you can learn from such analysis, and I&#39;m not really doing the&amp;nbsp;Sysomos graph tools justice. Here&#39;s Butterflyzer&#39;s take on similar but more recent data. Here, we&#39;ve integrated actual sample Tweets. Things are a little noisy graphically but the tools allow you to easily narrow and expand the information shown.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-bottom: 0.5em; margin-left: auto; margin-right: auto; padding-bottom: 6px; padding-left: 6px; padding-right: 6px; padding-top: 6px; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsZsdaVuyVu29qk-79DslYwjY9BfGi-MW0-YmNiTECfbyobsq5dyprgPihoOMtTY4jZRVhH5Bde9zxuqaerjVlwB6xjyAJoYZrAm7RfJUhNqiCW4Wa-e5ogIoV12FedBgW1Y9_NJ7wq9E/s1600/Egypt.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;603&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsZsdaVuyVu29qk-79DslYwjY9BfGi-MW0-YmNiTECfbyobsq5dyprgPihoOMtTY4jZRVhH5Bde9zxuqaerjVlwB6xjyAJoYZrAm7RfJUhNqiCW4Wa-e5ogIoV12FedBgW1Y9_NJ7wq9E/s640/Egypt.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 10px; padding-top: 4px; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</description><link>http://milesparker.blogspot.com/2011/04/meet-butterflyzer-part-i-is-this-any.html</link><author>noreply@blogger.com (Miles Parker)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDwuc3kG7m2Gha8ZrwV59UKsy5HSWO3GbT_XlBr6nHIJ8KVd5_Q9aSnDYK7AUNg-D_Dp6i7oEQxxw8yX0bgD0OEbJyPpRO_CYjEwW3JgljNxa2bS7WKtBlEJ-F9i7qnLSPYodw1CCU75A/s72-c/ScreenWebShadow.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-8253046099772411368</guid><pubDate>Wed, 23 Mar 2011 03:17:00 +0000</pubDate><atom:updated>2011-03-22T20:18:49.119-07:00</atom:updated><title>Sex, Lies and Eclipse</title><description>Now that I&#39;ve stolen your attention with the oldest marketing trick in the world, you might as well check out my EclipseCon talk Wednesday at 2:50 in Stevens Creek: &lt;a href=&quot;https://www.eclipsecon.org/submissions/2011/view_talk.php?id=2100&quot;&gt;&quot;Get Real? What is Eclipse AMP and why should you care?&quot;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I can promise you that a) I will talk about sex, and b) it won&#39;t be the least bit prurient, inappropriate or even mildly titillating. Sorry to disappoint. I am also going to talk about lies and perhaps tell a few of my own. And yep, I&#39;ll even talk about Eclipse. So,&amp;nbsp;what do Egypt, Watson, Teenage Pregnancy, Big Data, Nuclear Reactors and the Eclipse Modeling Framework have to with practical stuff that you care about? You&#39;re just going to have to have to come to the talk and sort the truth from the fiction for yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2XZMQ2UUNkzz60R6SXcU3bFY9poaqUdGW7WEy-1ex1vLjSQJxKeoUCMbXYofpstj7AaefZVEfCAU9MY1nvgKhKpltAX9EeAnsUFY4nb7jtjO3Nd2yNvPV48Jy9BbdrIwc-8v0NFjRAQw/s1600/Montage.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2XZMQ2UUNkzz60R6SXcU3bFY9poaqUdGW7WEy-1ex1vLjSQJxKeoUCMbXYofpstj7AaefZVEfCAU9MY1nvgKhKpltAX9EeAnsUFY4nb7jtjO3Nd2yNvPV48Jy9BbdrIwc-8v0NFjRAQw/s1600/Montage.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</description><link>http://milesparker.blogspot.com/2011/03/sex-lies-and-eclipse.html</link><author>noreply@blogger.com (Miles Parker)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2XZMQ2UUNkzz60R6SXcU3bFY9poaqUdGW7WEy-1ex1vLjSQJxKeoUCMbXYofpstj7AaefZVEfCAU9MY1nvgKhKpltAX9EeAnsUFY4nb7jtjO3Nd2yNvPV48Jy9BbdrIwc-8v0NFjRAQw/s72-c/Montage.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-1781729657894604805</guid><pubDate>Sat, 29 Jan 2011 23:13:00 +0000</pubDate><atom:updated>2011-01-29T18:50:05.089-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">emf</category><title>Supporting Multiple Resource types with EMF Editor</title><description>The resource model is one of those aspects of the Eclipse Modeling Framework that is extremely powerful yet can seem way too complicated for us mere mortals to muck with. &quot;But what if I break something?&quot; The thing about powerful abstractions is that the more powerful they are, the more they do; and the more they do, the more systems they touch and -- somehow -- the more mysterious they become. &amp;nbsp;I&#39;ll propose a little law here which I am sure is not original: &quot;any abstraction that is sufficiently powerful will be initially opaque&quot;.&amp;nbsp;Just where are those levers we need to pull to get things to do what we want? As a highly leveraged framework,&amp;nbsp;EMF is full of such abstractions. So how to get past that learning barrier?&lt;br /&gt;
&lt;br /&gt;
Well, it takes some up front commitment, really, but there is a pretty simple heuristic to it: Decide the things you want to change, look through the generated code for where the things are that you might want to change, and experiment. Or wait for someone else to do the experimenting for you, which is the smartest strategy of all. Ergo, you must be smart, because you&#39;re reading this. So without further ado, let&#39;s take a look at how to do something extremely cool.&lt;br /&gt;
&lt;br /&gt;
The basic scenario is this: there are a number of different data formats -- in EMF speak, &quot;Resource Implementations&quot; that might be appropriate for a given user and use case. By far the best example of this is dealing with the problem of data transparency vs. data efficiency. XML is (arguably) readable using any text editor, and it is definitely the format you want to be using when something goes wrong, for example a reference is bad or you have a problem with encoding. But memory footprint and load and save performance wise, it&#39;s a total dog. In contrast, Binary is the format you want to use when you have a lot of data and you need to use it, but good luck figuring out what&#39;s in it without your editor.&lt;br /&gt;
&lt;br /&gt;
Here&#39;s something that I&#39;ll bet many people -- even those who have been using EMF for a long time -- don&#39;t know. I didn&#39;t. EMF has built in support for a very efficient Binary Resource model. But how can we use it? There is (not last time I checked anyway) no resource type entry in .genmodel for &quot;Binary&quot;.&lt;br /&gt;
&lt;br /&gt;
In fact, it turns out that it is ridiculously easy to replace the generated XML resource support with support for binary resources if you&#39;re willing to touch a bit of code. (I want to thank Ed Merks and Kenn Hussey for pointing me the way initially.) That&#39;s great, but now you have the problem of sticking the user with an unreadable binary format. Wouldn&#39;t it be cool to support both formats, so the user could take the same data and save it in the format most appropriate for his or her needs? It turns out that that&#39;s easy to do too, and it took me (much) less time to figure out then it took to write this blog post. And actually, I need to get on with it, because I&#39;m working this weekend and I really don&#39;t want to be. So without even further ado, let&#39;s follow the heuristic I mentioned above.&lt;br /&gt;
&lt;br /&gt;
First, we know that we need to support multiple resource types. How do we change that? Well, resources are setup in the foo.model plugin. In foo.util we can see the various factories. So we need to create two new pieces. (Actually, we don&#39;t have to do this, but it makes it a little easier to see what it happening.) So we could look at what the existing resource handlers are doing -- say FooResourceImpl -- and copy and modify it with the appropriate changes:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;public class FooResourceImpl extends XMLResourceImpl {

&amp;nbsp;&amp;nbsp; &amp;nbsp;public FooResourceImpl(URI uri) {
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;super(uri);
&amp;nbsp;&amp;nbsp; &amp;nbsp;}
}&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Suggests that we probably want something like the below (although it&#39;s probably unnecesary):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;public class FooBinaryResourceImpl extends BinaryResourceImpl {

&amp;nbsp;&amp;nbsp; &amp;nbsp;public FooBinaryResourceImpl(URI uri) {
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;super(uri);
&amp;nbsp;&amp;nbsp; &amp;nbsp;}
}&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
I told you it was ridiculously simple. Similarly we want:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;public class FooBinaryResourceFactoryImpl implements Resource.Factory {
&amp;nbsp;&amp;nbsp; &amp;nbsp;public Resource createResource(URI uri) {
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return new FooBinaryResourceImpl(uri);
&amp;nbsp;&amp;nbsp; &amp;nbsp;}
};&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Now, we want to support two different kinds of files. We could do all sorts of funky stuff there, but let&#39;s keep it simple. We&#39;ll just use different file extensions. This part may seem just a bit mysterious, just because it involves a number of different artifact types. But first, we know that genmodel defines the file extensions. We can add one for the binary resources in the model section. Let&#39;s use &quot;foo,foobin&quot;. We&#39;re only doing that for consistency because the real action is elsewhere. Since we&#39;re now dealing with editor stuff it makes sense to look there for what we want. And if we look at the FooModelWizard, we can see that there is a reference to _UI_FooEditorFilenameExtensions. That&#39;s the bit we want to change, and because genmodel won&#39;t write over .properties files, we&#39;ll need to edit it there:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;[foo.editor/plugin.properties]
...
_UI_FooEditorFilenameExtensions = foo,foobin
...
&lt;/pre&gt;&lt;br /&gt;
We next need to tell the editor what to do with those binary files when it gets them. The natural place to do that is when we setup the editing domain for FooEditor, and we&#39;ll do it at the end of the method call:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;/**
  * This sets up the editing domain for the model editor. &lt;!-- begin-user-doc
  * --&gt; &lt;!-- end-user-doc --&gt;
  * 
  * @generated NOT
  */
 protected void initializeEditingDomain() {
...
  editingDomain.getResourceSet().getResourceFactoryRegistry().getExtensionToFactoryMap().put(&quot;foobin&quot;, new FooBinaryResourceFactoryImpl());
 }
&lt;/pre&gt;&lt;br /&gt;
OK, now the more challenging part. How to actually allow the user to select the file type? Again the obvious place to look is in new file wizard. We just need one change here, to tell the wizard what to do when the user selects the binary extension:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;FooModelWizard
/**
* Do the work after everything is specified.
* 
* 
&amp;gt;&amp;gt;  * @generated NOT
*/
@Override
public boolean performFinish() {
...  
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// Create a resource set
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ResourceSet resourceSet = new ResourceSetImpl();
&amp;gt;&amp;gt;resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(&quot;foobin&quot;, new&amp;nbsp;FooBinaryResourceFactoryImpl());
...
}&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Now, for extra credit, how can we let the user change the file type once a file has been created? Well, we know the user picks the file type in the editor, so let&#39;s look there. And here we go..we&#39;ll show the entire method, but it is only the first 15 lines or so that have changed:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;/**
*  
* 
* @generated NOT
*/
protected void doSaveAs(URI uri, IEditorInput editorInput) {
&amp;nbsp;&amp;nbsp; &amp;nbsp;ResourceSet resourceSet = editingDomain.getResourceSet();
&amp;nbsp;&amp;nbsp; &amp;nbsp;Resource resource = resourceSet.getResources().get(0);
&amp;nbsp;&amp;nbsp; &amp;nbsp;if (!uri.fileExtension().equals(resource.getURI().fileExtension())) {
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Resource oldResource = resource;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (uri.fileExtension().equals(&quot;foobin&quot;)) {
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;resource = new FooBinaryResourceImpl(uri);
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} else if (uri.fileExtension().equals(&quot;foo&quot;)) {
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;resource = new FooResourceImpl(uri);
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} else {
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;throw new RuntimeException(&quot;Unexpected resource type: &quot; + uri.fileExtension());
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;resource.getContents().addAll(oldResource.getContents());
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;oldResource.getContents().clear();
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;resourceSet.getResources().remove(oldResource);
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;resourceSet.getResources().add(0, resource);
&amp;nbsp;&amp;nbsp; &amp;nbsp;}
&amp;nbsp;&amp;nbsp; &amp;nbsp;resource.setURI(uri);
&amp;nbsp;&amp;nbsp; &amp;nbsp;setInputWithNotify(editorInput);
&amp;nbsp;&amp;nbsp; &amp;nbsp;setPartName(editorInput.getName());
&amp;nbsp;&amp;nbsp; &amp;nbsp;IProgressMonitor progressMonitor = getActionBars().getStatusLineManager() != null ? getActionBars().getStatusLineManager().getProgressMonitor()
: new NullProgressMonitor();
&amp;nbsp;&amp;nbsp; &amp;nbsp;doSave(progressMonitor);
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
All we are doing there is creating the new resource, moving the contents over to it and replacing the old resource with the new one. (Don&#39;t be afraid to muck with resources and resource sets, they aren&#39;t as fragile as you may think.) That&#39;s it. I&#39;m sure I missed something here that I&#39;ll discover later, but everything works.&lt;br /&gt;
&lt;br /&gt;
Back to the original use case. I needed to support the xml format because I expect people to use the data in the application in a lot of different ways. But I really needed the binary format because my application produces very large files and those files take a &lt;i&gt;long&lt;/i&gt; time to load. (When you load these files in the editor, the UI is frozen.) One file took:&lt;br /&gt;
&lt;br /&gt;
19 m, 57 s&lt;br /&gt;
&lt;br /&gt;
Using the binary format improved that a little bit:&lt;br /&gt;
&lt;br /&gt;
00 m, 00 s, 419 milliseconds&lt;br /&gt;
&lt;br /&gt;
Part of that is due to the fact that reference resolution can be deferred, but the entire file can be easily navigated without perceptible delay. The whole user experience is dramatically altered. That&#39;s a lot of functionality to gain with really some pretty small changes! And that&#39;s why taking the time to grasp more complex abstractions is worth the effort. What&#39;s interesting is that once you understand them, they don&#39;t seem at all complex!</description><link>http://milesparker.blogspot.com/2011/01/supporting-multiple-resource-types-with.html</link><author>noreply@blogger.com (Miles Parker)</author><thr:total>9</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-7002586855279017990</guid><pubDate>Sat, 01 Jan 2011 05:28:00 +0000</pubDate><atom:updated>2011-01-13T16:56:43.242-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">emf</category><title>EMF and RAP and Virgo, oh my..</title><description>Many of us who&#39;ve spent time traipsing through the Eclipse wilderness are probably familiar with this story...&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;Tis a beautiful, sunlit &#39;morn and you&#39;re wandering around the world wide web when you come across a bright shiny page that says something like &quot;Eclipse ABC does [exactly what you want to do] and [as we&#39;ve worked out all of the old bugs] it is [now] [relatively] [unless you&#39;re using..] easy to integrate with XYZ&quot;. There is even a set of step-by-step directions to get your from point ABC to point XYZ. Now, even though you&#39;ve been down this road many times before, hope springs internal in a [not so much anymore] young man&#39;s [or woman&#39;s] breast and you&#39;re up for a little adventure, as long as you come back before lunchtime. And in fact, the first part of your journey is pleasant, idyllic even. But then..&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&quot;..hmm.. this barren outcropping isn&#39;t on the map. And when did this tree trunk fall across the path? I think I already missed lunch. Still have to find a way around that somehow...maybe through this swamp over there. No, that definitely wasn&#39;t the way to go, let&#39;s back-track a bit. In fact, maybe it&#39;s time to head back, it&#39;s getting late. And what, waste all of the time I&#39;ve already spent exploring this area? Let&#39;s climb up over this talus slope and see if we can get a bit of a perspective on things. CRACK!! ZZZTTT!! Great..almost zapped by a bolt of lightning and now I&#39;m caught in a thunderstorm...typical.&quot;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
So, you&#39;ve struggled home at nine pm, wet, cold, tired and grumpy, and even though you missed dinner as well, your significant other greets you brightly. &lt;i&gt;&quot;Well, how was your day, dear?&quot;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
And somehow, your will is not broken. You&#39;ve learned to accept this kind of thing as a natural part of the life of an explorer living on the edge. [OK, laying it on a bit thick here..] In fact, the very next day, you decide that there has to be a better way. Naturally, this being the land [ecosystem, if you prefer] of Eclipse, there is a better way -- or at least that&#39;s what the project page for a new wonder project subtly suggests. So you naively and dutifully follow &lt;i&gt;their&lt;/i&gt; map, and head out for another morning of exploring, &lt;i&gt;promising&lt;/i&gt; yourself that this time you&#39;ll &lt;i&gt;definitely&lt;/i&gt; return before noon whether you&#39;ve found the end of the rainbow or not. And...guess what? You walk out through the forest about 100 meters, take a left and then another right, push a few stray logs out of the way, and suddenly a clearing opens up and a beautiful maiden [um, what&#39;s gender neutral for &quot;maiden&quot;?] is standing in the middle holding a... OK, let&#39;s stop there.&lt;/blockquote&gt;&lt;br /&gt;
The point is that, let&#39;s face it, often things in the Eclipse ecosystem, and oh, just about every other software ecosystem I can think of, just don&#39;t always really work as advertised. Sometimes they work really well, but there are glitches. Other times they don&#39;t work at all. Unfortunately you don&#39;t discover that until you&#39;ve wasted enough time that you are then willing to waste even more time trying to solve all kinds of bugs and issues that really should have been solved a long time ago. By someone else. That&#39;s why it&#39;s especially nice when something does work. Exactly as advertised. The first time you try it.&lt;br /&gt;
&lt;br /&gt;
I&#39;ve been experimenting with solutions to putting EMF models on the web for a year or two now off and on. There are two really cool efforts out there, one based on RAP and the other based on GWT, and both of which Kenn Hussey, Ed Merks and others have put a lot of effort into. After minor fits, starts and glitches -- most self-induced -- I&#39;ve been able to get cool EMF editors working on the web with relatively minimal effort -- insanely minimal if you compare to the time it would take to do a custom EMF front-end. But wait, did I say &quot;on the web&quot;? I should have said, &quot;on a web page, launched from Eclipse&quot;. For I have not really been able to get past the point of having a nice little web app show up in self-hosted mode and actually being able to deploy it -- in other words, so that &lt;b&gt;other people could actually use it&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
I&#39;ve tried and tried Tomcat hosting, but I guess I&#39;m too dumb or impatient for it. Inevitably I got lost in the vagaries of WAR file creation, missing dependencies, obscure console messages and bizarre configuration issues, culminating through the deep dark labyrinth of the Tomcat logging system. Then -- wisely exercising good judgment and ignoring sunk costs for once -- gave up. This last time though I had something that I really really wanted other people to be able to use, and some quality time to devote to it and determined to solve it. I was encouraged in this effort because people have really understood what needs to be done to make this process more straightforward. For example, there is  Holger Staudacher&#39;s GSOC effort for &lt;a href=&quot;http://eclipsesource.com/blogs/2010/08/17/equinoxrap-war-deployment-an-end-to-the-pain&quot;/&gt;RAP WAR products&lt;/a&gt; [Where is Tupac when you really need him?].&lt;br /&gt;
&lt;br /&gt;
Unfortunately this wasn&#39;t the end to my pain. And judging from the messages on the posting it hasn&#39;t ended everyone else&#39;s either. This isn&#39;t to diminish Holger&#39;s effort at all. To the contrary, it is the fact that this is such a difficult and log-across-the-path thing to take on that makes efforts like this so admirable and important. If all integration challenges were easy, we wouldn&#39;t need to worry about integration. All of the issues have to do not with the tools themselves, but with the target for those tools and the complexity of the underlying mechanisms, none of which the team has any control over. This is similar to the Buckminster and B3 effort. Efforts are needed because it isn&#39;t like Tomcat and Jetty and servlet bridges and other endless dependency issues are going to go away anytime soon, and dragons [or at least logs-in-the-path] be there.&lt;br /&gt;
&lt;br /&gt;
So after stumbling around a bit, I thought [I&#39;m getting to the point, finally] why not take a look at this Virgo thing? After all, as the RAP website says, there are two choices: Embed a server in Equinox, or Embed Equinox in an existing servlet container. And when you think about it, does it really make sense to layer one dynamic runtime technology  on top of another if you absolutely don&#39;t have to? Like, isn&#39;t that just asking for trouble?&lt;br /&gt;
&lt;br /&gt;
As usual, the &lt;a href=&quot;http://wiki.eclipse.org/RAP/Running_RAP_on_virgo&quot;&gt;documentation&lt;/a&gt; looked reasonable if not simple, and had the characteristic Eclipse modesty: &quot;Here are the steps we used to deploy RAP on Virgo. We know the process can be improved, but just to give you an idea of how it works, try the following:&quot;  So I followed the steps, stumbled once or twice and [in less time then it has taken me to write this blog post and perhaps for you to read it] I had the RAP demo app up and running! With the latest [1.4] version of RAP even.&lt;br /&gt;
&lt;br /&gt;
OK, great, but I&#39;d actually gotten that far with Tomcat before. What I &lt;i&gt;just knew&lt;/i&gt; wouldn&#39;t work was getting the EMF RAP stuff to work with that. I didn&#39;t quite get all of the console stuff and what not, but I just thought to myself, &quot;what if I just dropped the EMF bundles into the same place, modified the demo .plan file to include them, and.. No way that could possibly work, right? Not only did it work, but it actually worked &lt;i&gt;before&lt;/i&gt; I thought it would. I was ready for endless rounds of editing, rebuilding, restarting, reloading, re.. But instead, I saved the changes to the .plan file and Equinox/Virgo automagically hot-loaded them and ran through the dependencies there and then. I cleaned a couple of things up, and then I navigated to the URL, and there it was. Seriously, I haven&#39;t been that impressed by a technology that &quot;just worked&quot; since the first time I built an EMF model and editor. I&#39;ll say it: The Virgo/RAP/EMF stack is going to be -- already is -- a kick-ass combination. Light-weight development, light-weight deployment, industrial strength, web-based MDSD.&lt;br /&gt;
&lt;br /&gt;
And actually, the steps are even simpler than outlined in the docs above (but it&#39;s likely you&#39;ll want to refer back to the details there). Oh, one special note, I&#39;ve had it with being a build weeny. What I&#39;m doing below is dumb, dumb, dumb. No product builds, no ant, no Maven, nothing but you, Eclipse and your m &#39;n f&#39;in, drag &#39;n drop&#39;n mouse.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;I&#39;ll assume you have a working model in &lt;a href=&quot;http://wiki.eclipse.org/EMF_Editor_goes_RAP&quot;&gt;Indigo EMF RAP&lt;/a&gt;. Note that there is currently a &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=333253&quot;&gt;minor issue&lt;/a&gt;&lt;/li&gt;
there.
&lt;li&gt;&lt;a href=&quot;http://www.eclipse.org/virgo/download/&quot;&gt;Download&lt;/a&gt; Virgo Kernel and put it wherever the hell you damn well feel like.&lt;/li&gt;

&lt;li&gt;Download &lt;a href=&quot;http://eclipse.org/rap/downloads/1.4/&quot;&gt;Runtime RAP&lt;/a&gt; (I used 1.4) and drag the contents of plugins into [virgo]/repository/usr&lt;/li&gt;
&lt;li&gt; Download &lt;a href=&quot;http://download.eclipsesource.com/~fwaibel/virgo/org.equinoxosgi.core.autostart_1.0.0.jar&quot;&gt;The OSGi Autostart Jar&lt;/a&gt; and put it [virgo]/repository/usr.&lt;/li&gt;
&lt;li&gt;Go to your copy of Eclipse and copy-drag the following stuff from plugins into the [virgo]/repository/usr :&lt;br /&gt;
&lt;pre&gt;org.eclipse.emf.rap.*
org.eclipse.emf.common
org.eclipse.emf.ecore
org.eclipse.emf.ecore.xmi
org.eclipse.emf.edit&lt;/pre&gt;&lt;/li&gt;

&lt;li&gt;Export your plugins to [virgo]/repository/usr&lt;/li&gt;

&lt;li&gt;Create a file called whateverthehellyouwant.plan [OK, does the wold really need yet another dependency artifact type?] with something like the text below, obviously updating the version numbers when you come across this page in six months [when none of it will work anymore anyway], then copy it to [virgo]/pickup:&lt;br /&gt;
&lt;pre&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;plan name=&quot;virgo-emf-rap-demo&quot; version=&quot;1.4.0&quot; scoped=&quot;false&quot; atomic=&quot;false&quot;
xmlns=&quot;http://www.springsource.org/schema/dm-server/plan&quot;
xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
xsi:schemaLocation=&quot;
http://www.springsource.org/schema/dm-server/plan 
http://www.springsource.org/schema/dm-server/plan/springsource-dm-server-plan.xsd&quot;&amp;gt;

&amp;lt;!-- present in virgo 
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.equinox.common&quot; version=&quot;[3.5.0, 3.7.0)&quot; /&amp;gt;
--&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.osgi.services&quot; version=&quot;[3.2.100, 4.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.equinox.preferences&quot; version=&quot;[3.3.0, 4.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.equinox.app&quot; version=&quot;[1.3.1, 2.0.0)&quot; /&amp;gt;

&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.core.commands&quot; version=&quot;[3.6.0, 3.7.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.core.jobs&quot; version=&quot;[3.5.1, 4.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.core.contenttype&quot; version=&quot;[3.4.100, 4.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.core.runtime&quot; version=&quot;[3.6.0, 3.7.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.core.expressions&quot; version=&quot;[3.4.200, 4.0.0)&quot; /&amp;gt;

&amp;lt;artifact type=&quot;bundle&quot; name=&quot;com.ibm.icu.base&quot; version=&quot;[4.2.1, 5.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.help&quot; version=&quot;[3.5.0, 4.0.0)&quot; /&amp;gt;

&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.mortbay.jetty.util&quot; version=&quot;[6.1.23, 7.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.mortbay.jetty.server&quot; version=&quot;[6.1.23, 7.0.0)&quot; /&amp;gt;

&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.equinox.registry&quot; version=&quot;[3.5.0, 4.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.equinox.http.registry&quot; version=&quot;[1.1.0, 2.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.equinox.http.servlet&quot; version=&quot;[1.1.0, 2.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.equinox.http.jetty&quot; version=&quot;[2.0.0, 3.0.0)&quot; /&amp;gt;

&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.rap.rwt&quot; version=&quot;[1.4.0, 2.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.rap.rwt.q07&quot; version=&quot;[1.4.0, 2.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.rap.jface&quot; version=&quot;[1.4.0, 2.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.rap.ui.workbench&quot; version=&quot;[1.4.0, 2.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.rap.ui&quot; version=&quot;[1.4.0, 2.0.0)&quot; /&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.rap.ui.views&quot; version=&quot;[1.4.0, 2.0.0)&quot; /&amp;gt;

&amp;lt;!-- TAKES CARE OF SERVLET LAUNCH --&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.equinoxosgi.core.autostart&quot; version=&quot;[1.0.0, 2.0.0)&quot; /&amp;gt;

&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.emf.common&quot; version=&quot;[2.6.0, 3.0.0)&quot;/&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.emf.ecore&quot; version=&quot;[2.7.0, 3.0.0)&quot;/&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.emf.edit&quot; version=&quot;[2.7.0, 3.0.0)&quot;/&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.emf.ecore.xmi&quot; version=&quot;[2.6.0, 3.0.0)&quot;/&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.emf.rap.common.ui&quot; version=&quot;[2.7.0, 3.0.0)&quot;/&amp;gt;
&amp;lt;artifact type=&quot;bundle&quot; name=&quot;org.eclipse.emf.rap.edit.ui&quot; version=&quot;[2.7.0, 3.0.0)&quot;/&amp;gt;

&amp;lt;!-- YOUR EMF RAP BUNDLES GO HERE!! --&amp;gt;

&amp;lt;/plan&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;li&gt;Got to command line and type:&lt;pre&gt;cd [virgo]
export JAVA_OPTS=-Dorg.ogsi.service.http.port=10081
[Mac users:] export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
bin/.startup.sh
&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;Go to your browser and paste in: http://localhost:10081/thesamethingthattheworkedineclipse&lt;/li&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/ol&gt;
That&#39;s it. Hope you find your way through the forest as easily as I did. If you don&#39;t, then just remember that you&#39;re probably not alone, the world is full of scary places, and even when something doesn&#39;t make any sense there is probably still something to learn. 

Take a listen to what Tupac is saying:

&lt;blockquote&gt;&lt;small&gt;“I know it seems hard sometimes but remember one thing. 
Through every dark night, theres a bright day after that. 
So no matter how hard it get, stick your chest out, keep ya head up.... and handle it.”&lt;/small&gt;&lt;/blockquote&gt;

Come to think of it, Tupac is probably not the best source for words to live by. So perhaps better to hear how &quot;T Bone&quot; Stankus does it:

&lt;blockquote&gt;&lt;small&gt;I said, &quot;Hey! Hey, weird little whiners, I am on a quest
To dream the impossible dream.
Walking down the road one day, doo-dah, doo-dah,
I said, &quot;Hey kids, I&#39;m looking for the truth of life.
Where do I go, who do I see?&quot;
They said, &quot;Slow down, mister, in order to find the truth of life, one must see THE WIZARD!&quot;
I said, &quot;THE WIZARD? Well, where does this wizard, old wise one, live?&quot;
They said, &quot;You see the big, green, glow-in-the-dark house up on the hill?&quot;
I said, &quot;Yes, I see the big, green, glow-in-the-dark house up on the hill.
There&#39;s a big, dark forest between me and the big, green, glow-in-the-dark house up on the hill.
And a little old lady on a Hoover vacuum cleaner going &#39;I&#39;ll get you, my little pretty, and your little dog, Toto, too!&#39;.
I don&#39;t even have a little dog, Toto.&quot;&lt;/small&gt;&lt;/blockquote&gt;</description><link>http://milesparker.blogspot.com/2010/12/emf-and-rap-and-virgo-oh-my.html</link><author>noreply@blogger.com (Miles Parker)</author><thr:total>8</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-3835905815444166158</guid><pubDate>Thu, 11 Nov 2010 00:47:00 +0000</pubDate><atom:updated>2010-11-11T12:33:47.588-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business</category><category domain="http://www.blogger.com/atom/ns#">dharma</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">ip</category><title>Is GPL damaging to your ecosystem&#39;s health?</title><description>In my &lt;a href=&quot;http://milesparker.blogspot.com/2010/11/can-dynamic-duo-free-software-from-gpl.html&quot;&gt;post earlier this week&lt;/a&gt; I sighed about the incompatibilities between GPL and EPL, took the FSF to task for their (in my eyes anyway) disingenuous posture and suggested a way to hack ourselves free of what (I perceive to be) the damage that GPL can cause. But as I was writing that post, I realized that I had things backwards. I talked about what bugs me about the FSF&#39;s attitude, and I talked about what I wanted to do about it, but I didn&#39;t explain why I cared. It was all about my negative motivation, really. Or perhaps my &quot;negative positive&quot; motivation -- to undermine that which one sees as a threat to getting what one wants.  But I didn&#39;t talk about my &quot;positive positive&quot; motivation -- what I would actually like to see happen, or my &quot;positive negative&quot; motivation -- why I think there is a problem in the first place.&lt;br /&gt;&lt;br /&gt;Eh, ignore all that, I&#39;m beginning to sound like Donald Rumsfield. The point is...there are things I bitch about and that is generally because I &lt;i&gt;want&lt;/i&gt; things to be different and I &lt;i&gt;think&lt;/i&gt; I can make them so. This attitude happens to be the root of all neurosis, but oh well, here I go again..&lt;br /&gt;&lt;br /&gt;What I &lt;i&gt;want&lt;/i&gt; is to contribute to software ecosystems that allow the greatest possible resilience, diversity, and adaptation. To create that, one needs to have a large web of interaction. For example, the removal of one node should not cause a cascade of failure across all the dependent nodes -- we need substitutability. (As an aside, the bio-dynamic agriculture movement has a lot of very interesting things to say on these subjects.) To get this, one needs many different paths or edges between nodes. Now, for any ecosystem to work, one needs to exchange meaningful energy. That energy can take many different forms -- it can be food, money, solidarity, status, self-propogation, altruism or anything else that motivates human beings. And in my experience studying complex systems, it is those systems that support multiple forms of exchange that are the healthiest. In a sense (sorry, but I can&#39;t help but use the term here) one could say that these systems have a quality of meta-robustness.&lt;br /&gt;&lt;br /&gt;What I &lt;i&gt;think&lt;/i&gt; is that GPL harms the formation of these ecosystems more than it helps.  That&#39;s a bold (though not unique) claim, and one that may not be right. But it is what motivated my prior post, and I thought it would be worth walking through some of the logic so that you can judge for yourself.&lt;br /&gt;&lt;br /&gt;To examine this, let&#39;s look at the {x}PL landscape from the lens of interaction networks. We&#39;ll model the various ecosystems and see what pops out. I did this exercise in my head over the last year or so, and thought it was worth sharing. As always, there is no ultimate truth here, only a dynamic interaction or self-adapting and sometimes mutually correcting thoughts. So, it&#39;s impossible for my thinking to be &quot;correct&quot;, but it is possible that it might be interesting or even helpful in some way to others.&lt;br /&gt;&lt;br /&gt;First, let&#39;s get an idea of how this approach works, using a simple ecosystem that we are all familiar with. We’ll use the way-back machine and look at the dark days of pre-open source ecosystems. Believe it or not, such purely commercial ecosystems function to this very day.&lt;br /&gt;&lt;br /&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;http://metascapeabm.com/images/blog/OSModels.001.png&quot; /&gt;&lt;br /&gt;In the diagram above, we can see a very simple relationship. Company 0 creates software and releases it. It may release an open API, in which case other companies can write to that API freely, with the expectation that customers will purchase both pieces of software, and/or it might license the software to Company 1, which might in turn resell that license to its customers along with its own. Of course, any other company may do the same thing. An extremely important -- and I think under-appreciated -- aspect of this system is that any other company can use the open API and make money off it. In particular, if Company 1 releases a closed library based on Company 0’s open API, Company k can license that closed library without needing to get permission from Company 0. And this is true all down the chain. We end up with an ecosystem that looks like this:&lt;br /&gt;&lt;br /&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;http://metascapeabm.com/images/blog/OSModels.002.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Of course, in this case the web is fed by money only, so it isn&#39;t ideal according to my criteria, but it does function pretty well on its own. If we look at the space of the graph, the vertical dimension loosely measures the breadth of functionality (the graphs for the other webs below don’t spread as far in this dimension, but don’t read anything into that, the important thing is that they fade into the distance). The horizontal dimension loosely measures the depth of the dependency chain. Note that this is an extremely important dimension, because it has a strong correlation with reuse and abstraction. In general terms it represents the level of complexity and leverage that independent entities can contribute to the ecosystem.&lt;br /&gt;&lt;br /&gt;This purely commercial food web can spread out arbitrarily in either direction, but I propose that there are natural constraints that tend to limit horizontal growth. I’d like to build an Agent-Based Model to more formally test these theories when and if I get the time, but the basic intuition is simply that as we get further and further to the right, the APIs generally get more specialized. That is simply because the markets are always a subset (or intersection in the case of multiple dependencies) of the APIs that a given Company’s product is dependent on. As the market shrinks, the incentive to create software shrinks. This is all entirely consistent with what we see in the real world. There tend to be software creators at the left-most side (Microsoft, Oracle), various relatively large software makers that produce software for those systems (when they aren’t eaten up by their dependency daddies, a very frequent occurrence) to the immediate right (Adobe, WordPerfect, Blizzard), and scattered smaller companies that feed off these ecosystems (Photoshop plugin makers, VARs).&lt;br /&gt;&lt;br /&gt;Got that? Now let’s look at another straightforward system. This is a pure open source system. Here we’re looking at GPL because GPL is explicitly designed to foster such a system, but actually you don’t need strong copyleft per se. This model would work as well for any open source system where there isn’t commercial activity.&lt;br /&gt;&lt;br /&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;http://metascapeabm.com/images/blog/OSModels.005.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;This is actually even more straightforward, elegant even. Any (compatible!) license can make use of any other license. This gives rise to an Ecosystem that looks like this:&lt;br /&gt;&lt;br /&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;http://metascapeabm.com/images/blog/OSModels.006.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;The food web can be quite deep and rich, and indeed we see exactly that in real world GPL ecosystems (Linux, R). GPL based systems can and do grow in both dimensions, creating very beautiful and holistic ecologies. But, we need to ask a question here. Where exactly is the food? We know some of it comes from personal enthusiasm/poor judgement (guilty), some comes from universities, and some comes from corporations with an interest in selling software. But note that in any case the energy exchange isn’t really well aligned to the network structure. We’ll see the implications of that below.&lt;br /&gt;&lt;br /&gt;Now is probably a good time to reveal another bias of mine: you need money to produce good software, or at least to produce a significant amount of it in a form that end-users actually want to use. This may be a place where you and I disagree, and if so, fair enough -- you can stop reading, because the rest of my argument won’t be very convincing to you. [Insert smart-ass emacs comment here.]&lt;br /&gt;&lt;br /&gt;Next, we come to a much more complex ecosystem, and my personal favorite. This is one that attempts a sort of voluntary shot-gun wedding (yes, there is some contradiction there) between the open source and commercial worlds. Here we’re using the example of EPL, but the license doesn’t have to be weak copyleft -- it could be an even more permissive license like BSD. And (I was going to say “of course” but &quot;of course&quot; it is not that simple) you can mix them all up.&lt;br /&gt;&lt;br /&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;http://metascapeabm.com/images/blog/OSModels.003.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Here, we have companies creating EPL code and at the same time creating code that leverages -- or in some cases is entirely independent of -- that EPL code. We immediately notice something here: there are a lot more arrows! Again, my intuition is that more arrows equals more diversity equals more potential but your intuition might be different. Anyway, if we look at the food web that creates, it looks just as rich, if more colorful, as the GPL web:&lt;br /&gt;&lt;br /&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;http://metascapeabm.com/images/blog/OSModels.004.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;But notice that unlike the GPL web there is something more going on here. To the creative and autonomous energy of open source, we add the really practical energy of money. So the thing I love about this ecosystem is that not only can it grow in both directions, it has the energy to do so. Most importantly, unlike the commercial ecosystem it is not limited on the horizontal axis. Why? Because the market size doesn’t shrink as you go to the right. That is because to be commercially viable you don’t need to rely on vendor specific API trees. As the overall ecosystem is not based on or dependent on any particular technology, you can place yourself in the space where you can contribute to and align with any API/functionality subset. And because the backbone of the system is typically the open components (largely because social forces drive it there), if the APIs are too locked into a specific upstream dependency, you can change them!&lt;br /&gt;&lt;br /&gt;As above, I argue that this is precisely what we see in real weak-copyleft/commercial ecosystems. Commercial vendors and others (IBM, WindRiver, Google) produce software that other software can interact with via license, API or open source (BIRT, Android SDK, XText, RAP, Blackberry) and these can work with each other. In fact, if I can make be chauvinistic for a second, perhaps this is why the Eclipse ecosystem is leading all sorts of very creative and market friendly initiatives that seem to feed off of one another in all sorts of different and unexpected way (Xtext-&gt;iPhone, SWT-&gt;RAP). I always know when I’m modeling a complex as opposed to boring system -- I see connections that I didn’t anticipate.&lt;br /&gt;&lt;br /&gt;Note something else interesting with my examples above by the way. Technologies that are based around GPL are using EPL tools to create content. So that is a part of the weak and strong interactions that works well. Why shouldn&#39;t we try to to extend that success to the software itself?&lt;br /&gt;&lt;br /&gt;Warning: now my argument turns critical. I was perhaps unduly harsh on GPL -- or really, the FSF --  in my earlier post, but for the most part, I’m really motivated by the desire to see healthy ecosystems. While I do have an interest in EPL -- I&#39;m an Eclipse Committer after all -- I did not create this analysis to support my point of view. Instead, I came to my point of view based on this analysis. If there are faults in my analysis I agree to alter my point of view.&lt;br /&gt;&lt;br /&gt;So then, let’s look at what happens when we mix GPL and commercial licenses. This final diagram is quite a bit more complex but there are really just a couple of key interactions.&lt;br /&gt;&lt;br /&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;http://metascapeabm.com/images/blog/OSModels.007.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Clearly the GPL and Commercial systems can co-exist just as in the prior diagrams, but only to the extent that they are completely separate from one another. And to that extent it isn’t a mixed ecosystem at all but merely two distinct ecosystems. &lt;br /&gt;&lt;br /&gt;The EPL cannot exist in either part of this system. It can’t play in the GPL system of course. I’ve got a parochial interest in that issue and let’s just say that that leaves out a great chunk of software, but that really isn’t a problem we can pin on GPL alone. But remarkably, it can’t play in the commercial part of the system either, for reasons I’ll explain below, and we &lt;span style=&quot;font-style:italic;&quot;&gt;can&lt;/span&gt; pin that one on GPL.&lt;br /&gt;&lt;br /&gt;So how &lt;span style=&quot;font-style:italic;&quot;&gt;do&lt;/span&gt; the GPL and commercial entities interact? This is the crux, because whenever the GPL is criticized for incompatibility with market incentives, people argue that the two worlds are entirely compatible. As Seweryn Niemiec suggested in response to my last post: “Publish your software on GPL and make money from it too.” True, as far it goes. The idea here is to “dual license” your code. I note with some irony that this stand goes against the spirit of the GPL -- or at least that of the strong strong copyleft adherents -- and in that sense itself represents a kind of self-help IP hack itself. But there is a much deeper, subtler, and far reaching issue here; one that I think deserves contemplation from anyone interested in understanding the complex issues involved. It rests on network dynamics.&lt;br /&gt;&lt;br /&gt;Look at the diagram above again. Suppose that Company 1 wants to charge money for a license to their software. In other words, they simply want to play the same game that Company 0 is playing. Seems reasonable, but they can’t do it without obtaining rights from Company 0 and all that goes along with obtaining those rights, i.e. money, lawyers, non-competition, ad infinitum. Why is that? Because GPL terms prevent Company 1 from using the GPL code. So Company 1 needs a license to Company 0&#39;s commercial code. Well, can’t Company 1 write their software anyway, and get the user to buy a copy of Company 0&#39;s software and a copy of Company 1&#39;s software and install them together? According to the GPL license -- or at least the preferred FSF interpretation of it -- no! Here (my apologies for taking so long to get to the point) we find the real damage from the diversity point of view, and the justification for the IP hackery I describe in my post yesterday.&lt;br /&gt;&lt;br /&gt;I want to route around that damage because the implications of the above are even deeper than they first appear. The sub-license problem is transitive. Again, looking at the diagram above. Company k does not just have to license from Company 1 -- they must license from Company 0 as well. In fact they must license from every company in their entire chain of dependencies. When multiple companies license each other’s software these relationships become pair-wise! The implication of &lt;span style=&quot;font-style:italic;&quot;&gt;that&lt;/span&gt; is that the marginal increase in software ecosystem leverage and abstraction (the vertical dimension and to my mind software beauty) we can gain with a given input of money (what a teacher of mine refereed to as “green energy”) declines explosively with the number of companies involved. In other words, where L = lawyers and B = given level of abstraction, and N = # entities, L ~= B*N!. [Um.. or probably something like that, I&#39;m too lazy to think it through right now. But trust me, it&#39;s big.]&lt;br /&gt;&lt;br /&gt;Put even more simply, very few (but &gt; 0) companies are going to want to base their corporate strategy on buying a commercial license to GPL code that they don’t control and that anyone can create a free version of. Very very few people are going to want to make such an arrangement with two partners. And vanishingly small numbers of companies are going to want to do that with more than n partners. We end up with an Ecosystem that looks like this:&lt;br /&gt;&lt;br /&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;http://metascapeabm.com/images/blog/OSModels.008.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;What are we left with? Well, the same GPL ecosystem we had before, unless the logic of arguments like this convinces others that a more permissive ecosystem would be a better home. But the commercial situation is actually much worse. Again, now, we can’t even use a dependency’s API without a license! In reality what we would end up with is a separate commercial ecosystem (Microsoft..) and a separate copyleft ecosystem (Gnu..) and a set of separate mixed ecosystems either dominated at the top by small cartels benevolently bending the GPL rules (Linux, Redhat, ??) or controlled by single entities with questionable agendas (MySQL, Oracle).&lt;br /&gt;&lt;br /&gt;Which world do you want to live in? Is there a way to live in both? Perhaps self-evolving, decentralized, dynamic software development and deployment systems will convert the distinctions between these various models into not much more than random noise. I’ll return to the diagram from my previous post with an invitation to think about what sorts of software swans might emerge from the networks built by ugly ducklings like OSGi and P2 Aggregator.&lt;br /&gt;&lt;br /&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;http://metascapeabm.com/images/blog/GPLPlugins.005.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Update 11/11 responding to comments&lt;/span&gt;: I&#39;ll take poster&#39;s privilege here and respond to the very stimulating comments below..my responses simply got too long for the comment filter.&lt;br /&gt;&lt;br /&gt;I have learned a lot here -- mostly not to make generalizations, even (especially) about a &quot;General&quot; license! So perhaps some cleanup on terms here first..&lt;br /&gt;&lt;br /&gt;First Eric, thanks for your kind words. To clarify on the graphs. For each set to try to keep things simple, I&#39;m only drawing the common cases. For instance, in the commercial case Company 0 can license back from Company 1 as well, but I&#39;ve left that off. Is that what you meant?&lt;br /&gt;&lt;br /&gt;After the helpful clarifications from Simon and Laurent, perhaps we can simplify things along a couple of dimensions.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;1. &lt;span style=&quot;font-style:italic;&quot;&gt;I am referring to the &quot;hard&quot; GPL only.&lt;/span&gt; A couple of people brought up LGPL in the context of an overall GPL based ecosystem. To be clear I am referring to the GPL sans linking exception and I think that conflating GPL with the LGPL or GPL + L is literally semantics in the sense that while there is a cultural and labeling linkage between the various flavors the implications of each are completely different. LGPL and EPL are even somewhat compatible. To that extent, they don&#39;t make an ecosystem per se but only per definition/branding. So for LGPL or GPL + linking you could just use the same graph as for Commercial + Weak-Copy left system. There is the added benefit that you can mix the strong and weak copy-left components more easily so perhaps there should be a fifth set of graphs in there. That&#39;s very interesting politically, but let&#39;s leave that aside for now. I&#39;ll just say that I love Simon&#39;s comment &quot;In fact all would be easier if the EPL had been the LGPL&quot;. How true that is! &lt;br /&gt;&lt;br /&gt;But the main point is that to the extent a developer chooses to use pure, unadulterated GPL, the last scenario applies. I note that in practice this is how we really think of it -- as separate beasties. If someone says &quot;we use LGPL&quot; then people thinking about commercializing will say &quot;OK, that&#39;s kind of a pain in the ass, but we can probably live with it&quot;. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;I am concerned with the non-ideological authors only.&lt;/span&gt; By this I mean, to use a very loaded term, the &quot;exploitive&quot; GPL users who use GPL to meet their own business goals in a protective way -- &lt;i&gt;not because they want software to be free but because they want to charge for it&lt;/i&gt;. And so my argument as it were is with sub-groups of the two groups that Simon mentions: &lt;i&gt;[groups] who ..accept to sell a &quot;proprietary&quot; version&lt;/i&gt; and those who &lt;i&gt;prevent competitors from dual licensing stuff based on their software to clients who did not buy their proprietary license first&lt;/i&gt;. Now, I submit that there are a lot of companies and organizations that meet this definition.&lt;br /&gt;&lt;br /&gt;I appreciate Simon&#39;s comment that &quot;But everyone knows these players, and no one trusts them to build software that we want to dual-license later on&quot; and it sounds like the honest brokers make middle-ware exceptions and so on. I don&#39;t have enough experience with GPL licensing world to know how well that works, and it is gratifying to hear it. But still, there seem to be a lot of machinations there and various combinations and I imagine it can be a bit of a minefield. I can&#39;t help but think that it would be simpler if people just settled on weak copy-left for the majority of cases, perhaps keeping some of the real crown jewels aside.&lt;br /&gt;&lt;br /&gt;There is of course much gray in this area. The most annoying and unexpected and all too common in my experience are with University sponsored projects. I imagine a typical scenario is that somewhere along the way someone tried to convince the University administration to go open source and in order to make that argument they say &quot;if we use GPL, we can always make money licensing it commercially to corporations&quot;. Of course, in most cases that never really happens but the damage (from my perspective :) ) is done. On reflection, it I guess that means that it is ironically the gray area that I&#39;m concerned about. Those companies and institutions that have good intentions but that have a bit more of an &quot;I&#39;m hungry now!&quot; attitude or more ideological resonance with strong GPL. These are generally the places that are making really cool pieces of code that would be really useful to a lot of people, and that a lot of people use, but that then can&#39;t be integrated with the rest of the commercially oriented eco-system. This is where I think there is a tremendous amount of potential lost and I&#39;d like to find ways to make those worlds work or grow together better.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;I am not making an argument against the ideology of GPL, but against it&#39;s suitability as an ecosystem and the corresponding &quot;have your cake and eat it too mentality&quot;.&lt;/span&gt; So, my answer to the rhetorical question of the title is &quot;yes&quot;. :) I really do have affection, ambivalent affection, for the pure GPL approach as an exercise in economic and cultural hacking.  Are we all seeing the same thing then when as Laurent says, &quot;[GPL has] goals that are beyond &#39;building a healthy ecosystem&#39;&quot; and Simon says &quot;dependency graphs miss because the GPL is not as much about developing a thriving ecosystem as about guaranteeing freedom in the long run.&quot;?&lt;br /&gt;&lt;br /&gt;That&#39;s fair, and I just want people to see that. I&#39;m just arguing that GPL + commercial is not as healthy weak copy-left + commercial or that they are even close, at least in the short to medium term. In other-words, my argument is aimed at those companies or individuals who want to make money off of their software that they should choose weak copy-left over GPL. Maybe it&#39;s obvious that strong GPL and commercial software don&#39;t really mix as well as some people claim and all of these graphs are just making an obvious point more complicated than it needs to be! People who are making the decision to participate in GPL should see it as a long-term investment in freedom and that isn&#39;t compatible with how it is being used in many cases. Perhaps it is dual-licensing itself that should be prohibited under GPL! And yes, I realize that that would be a hard thing to accomplish legally.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Let&#39;s see, this response is way too long already. I think most of Simon&#39;s arguments re: Java are spot on. But again here I&#39;d say that the reason GPL worked is not because of its own goals or ideology but because its ideology happens to match up well to narrow corporate interests. Strange bedfellows..&lt;br /&gt;&lt;br /&gt;Why have you not covered the possibility to dual license under GPL *and* EPL? This scenario is the proper way to incorporation of GPL content in the ecosystem you are describing. &lt;br /&gt;&lt;br /&gt;To Laurent&#39;s question &quot;Why have you not covered the possibility to dual license under GPL *and* EPL? This scenario is the proper way to incorporation of GPL content in the ecosystem you are describing.&quot; Yes, that is what I would like everyone to do. :) But note that the people who are in the categories I describe in (2) will not do that, because doing so get&#39;s rid of all of the perceived advantages. In other words you can lump that into the weak copyleft + commercial category because that is where it goes. By the way for anyone who wants a GPL license for my EPL code, let me know and I&#39;ll be happy to grant it! I&#39;ll give you a commercial license too if you feel like paying me for it.&lt;br /&gt; &lt;br /&gt;Now I&#39;d like to ask for some advice from the GPL experts, since I think people have said in response to this and the previous post that my hack isn&#39;t really at all a hack. Actually, I don&#39;t think so either, I just meant it in the most general sense of a useful but somewhat ugly way around a particular engineering issue in a way that might not have been contemplated by the original authors. Does that mean that it would be perfectly ok to use GPL code in the way I describe, without even using the P2 aggregator bit? If one simply created a generic API, wrote a plugin for GPL code -- of course while providing all of the code for that plugin under GPL -- and then simply bundled that plugin and it&#39;s GPL code with the software itself that that would be ok?</description><link>http://milesparker.blogspot.com/2010/11/is-gpl-damaging-to-your-ecosystems.html</link><author>noreply@blogger.com (Miles Parker)</author><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1706439134994847071.post-3603331972352871174</guid><pubDate>Tue, 09 Nov 2010 19:45:00 +0000</pubDate><atom:updated>2010-11-10T17:25:12.618-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">amp</category><category domain="http://www.blogger.com/atom/ns#">business</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">ip</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>Can The Dynamic Duo Free Software from the GPL?</title><description>&lt;i&gt;Disclaimer: Hey I&#39;m not a lawyer, ok? Get your own damn legal advice. In fact, if anything I say makes sense to you, then I wish you&#39;d explain it to me, because it sure doesn&#39;t make any sense to me.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt;Updated 11/10:&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt; To understand my motivation for this post, you might want to read &lt;a href=&quot;http://milesparker.blogspot.com/2010/11/is-gpl-damaging-to-your-ecosystems.html&quot;&gt;my next post&lt;/a&gt;, which explains why I think GPL is not the best choice for building healthy software ecosystems.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt;Updated 11/9:&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt; I got some feedback on this blog which -- fairly I think -- took me to task for being too harsh on GPL and FSF. My intention was to express some frustration, poke a little fun at some sacred cows, and offer a creative alternative to the dilemma that so many of us face all of the time when we have to choose between more permissive flavors of software licenses like BSD and EPL, and the much more restrictive GPL license.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt;I thought I was clear about this, but if there is any confusion, I am not attacking people who make the choice to use GPL. I&#39;ve considered using the GPL for projects in the past, and I might again in the future. &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt;For what it&#39;s worth, while I would like to use the software I mentioned below -- and dozens of others -- I&#39;m just fine with the fact that I can&#39;t. And I&#39;m embarrassed contemplating the image I may have created of &quot;ranting&quot; against the injustice of the GPL license and laying awake at night plotting ways around it. After all, in the end, I can simply recreate that functionality. The next iteration is always able to learn and grow from the last, and providing software under a license that others can use freely will always give such software a leg up. Anyway, let me assure everyone that personally this really isn&#39;t a life and death issue.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt;But on the other hand, as a software developer, from an almost aesthetic point of view, there is nothing that frustrates me more than seeing the wasted energy spent on having people work on the same functionality for multiple projects under multiple licenses and organizations, when those people could be working together and getting much more accomplished with higher quality. (Yes, I do see the benefit of competition and diversity, and I think there is a value in that, but ultimately the gains from that are overwhelmed by the losses to cooperation.)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt;The central point of my IP engineering straw-man was to get people to think about alternatives. While I don&#39;t see anything wrong with people choosing a particular license, I don&#39;t see anything wrong with creative engineering around that license either. We do it all the time. Why &lt;i&gt;should&lt;/i&gt; people have to go to the extreme of re-writing things so that everything goes through a socket when there might be better alternatives just to satisfy an attempt by GPL to plug holes that are ultimately un-pluggable? My view is that the terms of the GPL just aren&#39;t aligned with the distributed, dynamic way that people are doing software now, and this contradiction is going to only become more apparent over time. If I can help that process along, I&#39;m proud to.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt;And I did intend to prod FSF a bit, because frankly I think they could use the prodding. There isn&#39;t something &lt;i&gt;fundamentally&lt;/i&gt; bad with their approach. As I say below, I think there is a lot to admire about copy-left -- it&#39;s a daring, ambitious, creative and fascinating response to a lot of issues in our society that go far beyond software licensing. But as in most cases, ambition married to dogmatism leads in the end to contradiction and ends up requiring reliance on half-truths and the expression of naked coercion to support itself. And so yes, I do think that the claims on the FSF website are absurd, disingenuous and actually harmful to the ultimate aim of the FSF, if that aim is education and not indoctrination.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(153, 51, 0);&quot;&gt;But no, I didn&#39;t mean to do it in a nasty way. My standard is to not say something online that I wouldn&#39;t be willing to say to someone&#39;s face. In an imaginary barstool conversation with someone from the FSF I&#39;m afraid to say that I &lt;i&gt;could&lt;/i&gt; imagine myself saying &quot;you know on your website, the part where you say... that&#39;s total bullshit, isn&#39;t it?&quot; I have had those kind of conversations in a friendly way in many contexts -- and taken as good as I gave -- but perhaps that&#39;s the kind of conversation that requires a few beers to go along with it. Anyway, I&#39;m leaving the original post as is, because I don&#39;t want to alter history, but with an offer of free beer to my GPL friends when I see you non-virtually.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;Recently I wanted to use some really nifty software within my own projects. I&#39;m not going to name the particular project here just because a) it isn&#39;t relevant to the argument, b) my concern is not restricted to any one project, and c) I&#39;m also an independent software developer, and respect the struggle that other small companies have trying to find the right strategy. The important point is that there is great potential for collaboration with said software but it uses GPL, which means I can&#39;t use it because the the two licenses are fundamentally &lt;a href=&quot;http://dev.eclipse.org/blogs/mike/2010/04/06/epl-gpl-commentary/&quot;&gt;incompatible&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The software also happens to be based on EPL code -- which I guess makes it technically incompatible with itself! I can&#39;t help but say that this approach seems unfair to me. Basically, one is taking the attitude that &quot;I&#39;ll use other developer&#39;s software under their more open terms, but then release my software under terms that prevent those developers from doing the same&quot;. That&#39;s fine for commercial software, but in my opinion not so good for &quot;open&quot; software as it makes the relationship one-way. That&#39;s a subject I hope to return to in a later post, but ultimately, the banker&#39;s question has to be &quot;why participate in a collaboration where the GPL entity is the only company able to make money off of the collaboration?&quot;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As I researched the whole issue and went to others for ideas and advice, I headed over to the GPL site, and found myself looking at pitch perfect double-speak:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3UL4GrnVsqTWq2q7FUWUXXCKOukQZ706wIbethZ3OtJs07PDRNRAhgxDEdolJ7I2eVzWIQN46HF5g2XYLLIXBTuIE5GFkt8sk63GNg0avLpfaM5W-vVtz1CZ3kS8uL0DBipvv19BkhV0/s1600/GPLPlugins0.png&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3UL4GrnVsqTWq2q7FUWUXXCKOukQZ706wIbethZ3OtJs07PDRNRAhgxDEdolJ7I2eVzWIQN46HF5g2XYLLIXBTuIE5GFkt8sk63GNg0avLpfaM5W-vVtz1CZ3kS8uL0DBipvv19BkhV0/s400/GPLPlugins0.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5537342338255016418&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;So now, let&#39;s see... If I want to use GPL Software X, and I decide to include that in my EPL or commercial release, then the Free Software Foundation will use the full power of the courts to prevent me from doing so. I can&#39;t buy anyone a beer and I can&#39;t even write what I want to. What sort of &quot;freedom&quot; was that again? In what sense exactly am I not &quot;restricted&quot;? I think what the page is really trying to say is &quot;Freedom is Restriction&quot;. Hey, I understand and am (ambivalently) admiring of the whole idea of GPL, but could we drop the hypocrisy and variations on a theme by Orwell? Please?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, I guess I&#39;m not going to get what I &quot;deserve&quot; out of the GPL, so is there a way to liberate it instead? After thinking about it for some time it dawned on me that there were some tools in the Eclipse jail-breaking kit that just might fit the bill.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first thing we need to understand is what &lt;i&gt;won&#39;t&lt;/i&gt; work. I can&#39;t have a direct dependency on the GPL code, obviously. I can&#39;t build something that requires the copyrighted GPL software to compile, and I obviously can&#39;t deliver it either.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJK2gWvocRz8UK62pdrqCRk9S_qUxD2lT7LdMXsRTZhW_xGlLMFHXYcUH8roO2t8OWq7M22qZy_9WGkRdtTkxZfxlUBUGr7cTZaKejIzgfxP0rRJoZe0N1L8McpyLr5ULJkaBLOGZ8W8c/s1600/GPLPlugins.002.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJK2gWvocRz8UK62pdrqCRk9S_qUxD2lT7LdMXsRTZhW_xGlLMFHXYcUH8roO2t8OWq7M22qZy_9WGkRdtTkxZfxlUBUGr7cTZaKejIzgfxP0rRJoZe0N1L8McpyLr5ULJkaBLOGZ8W8c/s400/GPLPlugins.002.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5537346684380251682&quot; style=&quot;cursor: pointer; width: 396px; height: 240px;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;But, what if I encapsulated the functionality that I wanted into an independently developed set of APIs? Then, I could create a separate code base for a plugin that implements that generic API and delegates the calls to the target GPL API. (Note that I can release the same or other software under various licenses. For example, I could make my Generic API available under EPL and/or BSD.) &lt;b&gt;BAM!!&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiSUPUBGi2d_KO76Pmh06Ew4nBCjMI9Oip6H6HcSoNw9xFB9ujnXUMEVKyY-oTY57smFqfOkoE_M59QQknagG8uhywEW3isLWo3EkKxupqXMltLCUvye8ALdBLJk8Pzl3dFh-hditxBxY/s1600/GPLPlugins.003.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiSUPUBGi2d_KO76Pmh06Ew4nBCjMI9Oip6H6HcSoNw9xFB9ujnXUMEVKyY-oTY57smFqfOkoE_M59QQknagG8uhywEW3isLWo3EkKxupqXMltLCUvye8ALdBLJk8Pzl3dFh-hditxBxY/s400/GPLPlugins.003.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5537346690315196082&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Perhaps we can escape this diabolic trap after all. We can see in the following diagram that we&#39;ve zig-zagged around any dependency issues. The OSGi plugin loads the GPL functionality at runtime, not design or compile time. Take that, fiendish enslavers of software! &lt;b&gt;SOCK!!&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3dA2QFJdtet5FhlV3YpD_se0N7X1VJyAvf_zBxyq71GwryYa-a5QSv7Ho6vw9sQi8puYAioHHPYksB2gapLU-2Is2Ic2fy2Tq0okMPeomfqK5_i-hJxmS2iipOnc2Zz5Mvaej18TQSZs/s1600/GPLPlugins.004.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3dA2QFJdtet5FhlV3YpD_se0N7X1VJyAvf_zBxyq71GwryYa-a5QSv7Ho6vw9sQi8puYAioHHPYksB2gapLU-2Is2Ic2fy2Tq0okMPeomfqK5_i-hJxmS2iipOnc2Zz5Mvaej18TQSZs/s400/GPLPlugins.004.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5537346696048395490&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;But there is still a problem here. Though no commercial software vendor would ever claim such a right and get away with it, the FSF actually wants to intrude on what software a program is allowed to link to dynamically. For some reason I can&#39;t fully articulate, as a lover of software the idea that someone could prevent you from executing something from within a program &lt;i&gt;after&lt;/i&gt; the software is written -- even though you have the rights to use both pieces of software independently -- seems absurd to me, and even a bit wicked.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, as far as I know, the FSF has never had any success convincing a court of the enforceability of this unique approach to deconstructing copyright. It essentially requires a form of copyright protection that can see into the future and read minds. (&quot;I just know that he wrote that software with the intention of allowing other people to link it to my software.&quot;) But in any case, the only hope of actually enforcing this lunacy rests on software delivery, not development. That&#39;s because each software component isn&#39;t at all related until the whole distribution is assembled, packaged and provisioned.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That is an extremely important point, because it means that as say an EPL &lt;i&gt;developer&lt;/i&gt;, I would be free to use the above strategy without putting myself or my software under any jeopardy at all. (Now would be a good time to scroll back up to the top and read that disclaimer again..) I could even put that software on a server somewhere and let people build it themselves. (OK, Richard Stallman might have something to say about that, but in that case just put your hands over your ears and repeat &quot;nanananan..I&#39;m not listening...I&#39;m not listening...&quot; Or maybe a freeze ray would be in order.) The only trouble -- again, under the most ludicrous potential court ruling, but it isn&#39;t like ludicrous rulings never happen -- would be when I actually tried to deliver software to someone. &lt;i&gt;If&lt;/i&gt; I bundled said GPL software with my project or product, &lt;i&gt;and&lt;/i&gt; I hosted that bundle on my site, I maybe sort of possibly could be violating the GPL license. Somehow.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So you may have been wondering how P2 Aggregator fits into the picture. Here&#39;s how: nobody ever actually delivers the software at all! Instead, the end user selects the components that he or she wants from an aggregator site. If you think about it, aggregator is really a dynamic plugin mechanism, but for deployment rather than run-time. And, like plugins, it allows us to insert indirection into the dependency chain. You can assemble stacks of dependencies in any arbitrary way as long as those dependencies are satisfied. So, let&#39;s use dynamic deployment in the same spirit we used dynamic development. &lt;b&gt;POW!!&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy7wAeGNMSuTnEZ235CwJUv_1ATZMfeEfRcGRSUSRAzNVVoPRi92Lc8lrh3rs-h__8oGp5qmaTK-BJVCR9cgC5hrfJOOY5-E4gQfwbW6PxvKRVcvBDpspp1wOqv1bbZDvPZ2f4d_DGNQc/s1600/GPLPlugins.005.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy7wAeGNMSuTnEZ235CwJUv_1ATZMfeEfRcGRSUSRAzNVVoPRi92Lc8lrh3rs-h__8oGp5qmaTK-BJVCR9cgC5hrfJOOY5-E4gQfwbW6PxvKRVcvBDpspp1wOqv1bbZDvPZ2f4d_DGNQc/s400/GPLPlugins.005.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5537346699684693858&quot; style=&quot;cursor: pointer;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dependencies are ultimately specified in a file somewhere but in such a way that the software as delivered meets the appropriate license for the appropriate usage path. In other words, the GPL site &quot;conveys&quot; the GPL content, including as appropriate the dual-licensed proxy-API and plugin code. The EPL licensed project provides all of its code and thus of course avoids any potential issues of license incompatibility. And the DMZ site provides the generic API (and optionally the proxy plugins) under BSD license, which is compatible with both. &lt;b&gt;WHAP!!!&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The really subversive part is that a commercial vendor might even be able to use this method to deliver software using GPL functionality. &lt;b&gt;KA-POW!!!!&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note that the P2 aggregate approach is very different from the kind of &quot;aggregate&quot; &lt;a href=&quot;http://www.gnu.org/licenses/gpl-faq.html#MereAggregation&quot;&gt;discussed&lt;/a&gt; in the GPL FAQ. In a typical aggregate like a Linux DVD Distro  (does anyone actually make those anymore?), all of the software is put in one place. Instead, with a P2 Aggregator provisioned application, the customer assembles the software for his or herself, just as he or she does when downloading applications from the web. The GPL EPL software dependencies never exist anywhere else! So there is simply no sense in which the two sets of software could be said to incorporate each other.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a thought experiment, imagine a customer who wants to use a mixture of open source and commercial software to edit photos. If she installs PhotoShop and a GPL&#39;d Photoshop plugin, she couldn&#39;t be accused of violating copyright, could she? What if she went to an independent website and that website had a link for downloading Photoshop and another one for downloading the GPL plugin? Would that website be violating the GPL copyright? What if that website were instead hosted by Photoshop. Would that magically cause Adobe to be in violation of copyright? Now, imagine that both Photoshop and the plugin were hosted at oh, say the Mac App Store? Would the App Store be in violation? What if instead that user went to an Eclipse Market provider and selected a commercially licensed Eclipse image editor, together with a GPL-based plugin, which were then installed together? As far as I can see, the distinctions all quickly reduce into absurdity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I&#39;d love to hear your point of view whatever it is. To avoid wasting a lot of time, I&#39;d especially like to hear from you if you think my idea won&#39;t work! (And in the interests of giving the Eclipse Foundation legal team a sound night&#39;s sleep, no, I am definitely not planning to test this theory out on an Eclipse hosted project.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, kids, can &lt;b&gt;Captain Aggregator&lt;/b&gt; and &lt;b&gt;The Plugin&lt;/b&gt; free captive software from &lt;b&gt;Dr. GPL&lt;/b&gt;? Or is our attempt to free ourselves from the forces of [...hmm... &quot;forces of people with a different point of view&quot; doesn&#39;t really have much of a ring to it, does it] doomed to failure? Quite a cliff-hanger, eh? &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://milesparker.blogspot.com/2010/11/can-dynamic-duo-free-software-from-gpl.html</link><author>noreply@blogger.com (Miles Parker)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3UL4GrnVsqTWq2q7FUWUXXCKOukQZ706wIbethZ3OtJs07PDRNRAhgxDEdolJ7I2eVzWIQN46HF5g2XYLLIXBTuIE5GFkt8sk63GNg0avLpfaM5W-vVtz1CZ3kS8uL0DBipvv19BkhV0/s72-c/GPLPlugins0.png" height="72" width="72"/><thr:total>22</thr:total></item></channel></rss>